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

MySQL - पंक्तियों को लॉक किए बिना तालिका पंक्तियों को अपडेट करें

सबसे पहले, यदि आप MySQL के InnoDB स्टोरेज इंजन पर डिफॉल्ट करते हैं, तो कोई तरीका नहीं है कि आप बिना रो लॉक के डेटा को अपडेट कर सकते हैं, सिवाय ट्रांजेक्शन आइसोलेशन लेवल को READ UNCOMMITTED रन करके सेट करने के अलावा

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

हालांकि, मुझे नहीं लगता कि डेटाबेस व्यवहार वह है जो आप उम्मीद करते हैं क्योंकि इस मामले में गंदे पढ़ने की अनुमति है। पढ़ें UNCOMMITTED व्यवहार में शायद ही कभी उपयोगी होता है।

@Tim से उत्तर को पूरक करने के लिए, जहां क्लॉज में उपयोग किए गए कॉलम पर एक अद्वितीय अनुक्रमणिका रखना वास्तव में एक अच्छा विचार है। हालांकि, कृपया यह भी ध्यान दें कि इस बात की कोई पूर्ण गारंटी नहीं है कि ऑप्टिमाइज़र अंततः बनाए गए इंडेक्स का उपयोग करके ऐसी निष्पादन योजना का चयन करेगा। यह काम कर सकता है या नहीं, यह मामले पर निर्भर करता है।

आपके मामले के लिए, आप क्या कर सकते हैं कि लंबे लेनदेन को कई छोटे लेनदेन में विभाजित करना है। एक शॉट में लाखों पंक्तियों को अपडेट करने के बजाय, हर बार केवल हजारों पंक्तियों को स्कैन करना बेहतर होगा। X लॉक तब जारी किए जाते हैं जब प्रत्येक छोटा लेन-देन करता है या रोलबैक करता है, समवर्ती अपडेट को आगे बढ़ने का अवसर देता है।

वैसे, मुझे लगता है कि आपके बैच की प्राथमिकता अन्य ऑनलाइन प्रक्रियाओं की तुलना में कम है, इस प्रकार प्रभाव को और कम करने के लिए इसे पीक आवर्स से बाहर शेड्यूल किया जा सकता है।

पी.एस. IX लॉक रिकॉर्ड पर ही नहीं है, लेकिन उच्च-ग्रैन्युलैरिटी टेबल ऑब्जेक्ट से जुड़ा हुआ है। और यहां तक ​​कि रिपीटेबल रीड ट्रांजैक्शन आइसोलेशन स्तर के साथ, जब क्वेरी एक अद्वितीय इंडेक्स का उपयोग करती है तो कोई गैप लॉक नहीं होता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं कोडइग्निटर के साथ एक एसक्यूएल स्क्रिप्ट कैसे निष्पादित कर सकता हूं और इसे डेटा पास कर सकता हूं?

  2. mysql:NOT LIKE के लिए सही सिंटैक्स क्या है?

  3. MySQL पासवर्ड फ़ंक्शन

  4. अपनी हार्ड डिस्क पर MySQL डेटाबेस स्थान कैसे खोजें?

  5. 404 को समान url पर पुनर्निर्देशित करें