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

असफल प्रविष्टियों पर MySQL ऑटोइनक्रिकमेंट क्यों बढ़ता है?

InnoDB एक लेन-देन इंजन है।

इसका मतलब है कि निम्नलिखित परिदृश्य में:

  1. Session A रिकॉर्ड सम्मिलित करता है 1
  2. Session B रिकॉर्ड सम्मिलित करता है 2
  3. Session A वापस आ जाता है

, या तो अंतराल की संभावना है या session B session A . तक लॉक रहेगा प्रतिबद्ध या वापस ले लिया।

InnoDB डिजाइनरों (अधिकांश अन्य लेनदेन इंजन डिजाइनरों के रूप में) ने अंतराल की अनुमति देना चुना।

दस्तावेज़ीकरण :

<ब्लॉकक्वॉट>

ऑटो-इन्क्रीमेंट काउंटर को एक्सेस करते समय, InnoDB एक विशेष तालिका-स्तर का उपयोग करता है AUTO-INC लॉक करें कि यह वर्तमान SQL के अंत तक रहता है बयान, लेनदेन के अंत तक नहीं। एक AUTO_INCREMENT वाली तालिका में सम्मिलित करने के लिए संगामिति को बेहतर बनाने के लिए विशेष लॉक रिलीज़ रणनीति पेश की गई थी कॉलम

InnoDB जब तक सर्वर चलता है, इन-मेमोरी ऑटो-इन्क्रीमेंट काउंटर का उपयोग करता है। जब सर्वर बंद हो जाता है और फिर से चालू हो जाता है, InnoDB पहले INSERT . के लिए प्रत्येक तालिका के लिए काउंटर को पुन:प्रारंभ करता है तालिका में, जैसा कि पहले बताया गया है।

अगर आप id से डरते हैं कॉलम को चारों ओर लपेटकर, इसे BIGINT बनाएं (8-बाइट लंबा)।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. त्रुटि 1148:इस MySQL संस्करण के साथ प्रयुक्त कमांड की अनुमति नहीं है

  2. बहुभाषी डेटा रखने के लिए सबसे अच्छी डेटाबेस संरचना क्या है?

  3. MySQL क्वेरी पिछले सप्ताह से डेटा का चयन करने के लिए?

  4. डेटाबेस प्रॉक्सी फ़ेलओवर टाइम्स की तुलना करना - ProxySQL, MaxScale और HAProxy

  5. MySQL में Coalesce का उपयोग कैसे करें