यह InnoDB में ऑटो इंक्रीमेंट लॉकिंग का एक उदाहरण है:जैसा कि आप एक ही सत्र में एक साथ 2 स्टेटमेंट निष्पादित कर रहे हैं:ऑटो इंक लॉक पहली क्वेरी द्वारा प्राप्त किया जाता है, और ऑटोइनक्रिकमेंट वैल्यू जेनरेशन स्टेटमेंट के बीच इंटरलीव नहीं किया जाता है - यह पूरा बिंदु है लेन-देन का।
यह हमेशा डिज़ाइन द्वारा होगा:यदि ऐसा नहीं होता, तो जिस तरह से InnoDB में लेन-देन काम करता है, ठीक है, वह काम नहीं करेगा। OLTP टाइप लोड के तहत स्केलेबिलिटी भयानक होगी क्योंकि हर इंसर्ट को हर दूसरे इंसर्ट के खत्म होने, प्रतिबद्ध होने, या इससे भी बदतर - रोल बैक के लिए इंतजार करना होगा।
यानी:यदि आपका पहला इंसर्ट आपके दूसरे इंसर्ट से 5 गुना लंबा चलता है, और फेल हो जाता है और वापस लुढ़क जाता है, तो दूसरा इंसर्ट अभी भी पूरा होता है और कमिट किया जाता है। अन्यथा, आपको ईए के लिए इंतजार करना होगा। एक के बाद एक पूरी होने वाली क्वेरी।
यदि आपको अनुक्रमिक और बिल्कुल अनन्य आईडी #s की आवश्यकता है, तो उन्हें किसी अन्य स्रोत से प्राप्त करें। AutoInc कॉलम केवल एक अद्वितीय मान की गारंटी देते हैं - जरूरी नहीं कि एक मोनोसेक्वेंस - जो कि क्रमांकन और एक अड़चन का बिंदु है।
यदि आवश्यक हो तो इसका एक तरीका:
innodb_autoinc_lock_mode = 0
सेट करें आपके my.cnf/mysql.ini
विवरण InnoDB और Options में ऑटो इंक लॉकिंग का