Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL कुछ ऑटो वेतन वृद्धि आईडी क्यों छोड़ता है?

यह InnoDB में ऑटो इंक्रीमेंट लॉकिंग का एक उदाहरण है:जैसा कि आप एक ही सत्र में एक साथ 2 स्टेटमेंट निष्पादित कर रहे हैं:ऑटो इंक लॉक पहली क्वेरी द्वारा प्राप्त किया जाता है, और ऑटोइनक्रिकमेंट वैल्यू जेनरेशन स्टेटमेंट के बीच इंटरलीव नहीं किया जाता है - यह पूरा बिंदु है लेन-देन का।

यह हमेशा डिज़ाइन द्वारा होगा:यदि ऐसा नहीं होता, तो जिस तरह से InnoDB में लेन-देन काम करता है, ठीक है, वह काम नहीं करेगा। OLTP टाइप लोड के तहत स्केलेबिलिटी भयानक होगी क्योंकि हर इंसर्ट को हर दूसरे इंसर्ट के खत्म होने, प्रतिबद्ध होने, या इससे भी बदतर - रोल बैक के लिए इंतजार करना होगा।

यानी:यदि आपका पहला इंसर्ट आपके दूसरे इंसर्ट से 5 गुना लंबा चलता है, और फेल हो जाता है और वापस लुढ़क जाता है, तो दूसरा इंसर्ट अभी भी पूरा होता है और कमिट किया जाता है। अन्यथा, आपको ईए के लिए इंतजार करना होगा। एक के बाद एक पूरी होने वाली क्वेरी।

यदि आपको अनुक्रमिक और बिल्कुल अनन्य आईडी #s की आवश्यकता है, तो उन्हें किसी अन्य स्रोत से प्राप्त करें। AutoInc कॉलम केवल एक अद्वितीय मान की गारंटी देते हैं - जरूरी नहीं कि एक मोनोसेक्वेंस - जो कि क्रमांकन और एक अड़चन का बिंदु है।

यदि आवश्यक हो तो इसका एक तरीका:

innodb_autoinc_lock_mode = 0 सेट करें आपके my.cnf/mysql.ini

. में

विवरण InnoDB और Options में ऑटो इंक लॉकिंग का



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL प्राथमिक कुंजी

  2. विस्फोट के बराबर () MySQL में तार के साथ काम करने के लिए

  3. PHP के साथ MySQL डेटाबेस में सरणी डालें

  4. डेटाबेस कॉर्नर:मैसकल स्टोरेज इंजन के लिए शुरुआती गाइड

  5. विशेषाधिकार देने का प्रयास करते समय उपयोगकर्ता 'रूट'@'लोकलहोस्ट' के लिए प्रवेश निषेध। मैं विशेषाधिकार कैसे प्रदान करूं?