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

MySQL 'अपडेट के लिए चयन करें' व्यवहार

मैं आपके मामलों को देखता हूं और समझाता हूं कि ये ताले कैसे काम करते हैं:

1 मामला

T1 आपकी परीक्षण तालिका में कुछ पंक्तियों को अद्यतन करना चाहता है। यह लेन-देन सभी टेबल पर IX लॉक और पहली 5 पंक्तियों पर X लॉक लगाता है।

T2 आपकी परीक्षण तालिका में कुछ पंक्तियों को अपडेट करना चाहता है। यह लेन-देन IX (क्योंकि IX के साथ संगत IX) को सभी टेबल पर लॉक कर देता है और पहली 5 पंक्तियों के लिए प्रयास करता है लेकिन यह ऐसा नहीं कर सकता क्योंकि X, X के साथ संगत नहीं है

तो हम ठीक हैं।

2.1 केस

T1 आपकी परीक्षण तालिका में कुछ पंक्तियों को अद्यतन करना चाहता है। इस लेन-देन ने सभी टेबल पर IX लॉक और पहली 5 पंक्तियों पर X लॉक लगा दिया।

T2 आपकी परीक्षण तालिका से कुछ पंक्तियों का चयन करना चाहता है। और यह कोई लॉक नहीं लगाता है (क्योंकि InnoDB नॉन-लॉकिंग रीड प्रदान करता है)

2.1 केस

T1 आपकी परीक्षण तालिका में कुछ पंक्तियों को अद्यतन करना चाहता है। इस लेन-देन ने सभी टेबल पर IX लॉक और पहली 5 पंक्तियों पर X लॉक लगा दिया।

T2 आपकी परीक्षण तालिका से कुछ पंक्तियों को अपडेट (अपडेट के लिए चुनें) करना चाहता है। आईएस को पूरी मेज पर रखें और पंक्ति पर एस लॉक प्राप्त करने का प्रयास करें और विफल हो जाएं क्योंकि एक्स और एस असंगत हैं।

अलगाव स्तर के बारे में भी हमेशा जागरूक रहें:अलग-अलग स्तर अलग-अलग तंत्र को ताले मुक्त/अधिग्रहित करने का कारण बनते हैं

आशा है कि यह मदद करता है




  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:तालिका नहीं बना सकता (त्रुटि:150)

  2. एक MySQL तालिका से डुप्लिकेट पंक्तियों को कैसे हटाएं

  3. mysql - क्या मैं पूछ सकता हूं कि किसी दिए गए होस्ट ने कितने Connect_errors दिए हैं?

  4. निष्पादन अद्यतन पर HQL अधूरा 'क्रॉस जॉइन' उत्पन्न कर रहा है

  5. MySQL परिणाम सेट में पंक्तियों को कैसे सीमित करें