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

चयन के साथ अद्यतन करें, क्या यह प्रत्येक पंक्ति या सभी चयनित रिकॉर्ड को लॉक कर देगा

UPDATE लेन-देन में चल रहा है - यह एक atomic है ऑपरेशन, जिसका अर्थ है कि यदि पंक्तियों में से एक विफल हो जाता है (उदाहरण के लिए अद्वितीय बाधा के कारण) तो यह 5000 पंक्तियों में से किसी को भी अपडेट नहीं करेगा। यह एक ट्रांजेक्शनल डेटाबेस के ACID गुणों में से एक है।

इस वजह से UPDATE संपूर्ण लेन-देन के लिए सभी पंक्तियों पर लॉक रखें। अन्यथा एक और लेन-देन एक पंक्ति के मूल्य को इसके वर्तमान मूल्य के आधार पर और अद्यतन कर सकता है (मान लें कि अद्यतन रिकॉर्ड सेट मान =मान * '2')। इस कथन को अलग-अलग परिणाम देना चाहिए, यह इस बात पर निर्भर करता है कि पहला लेन-देन करता है या रोलबैक करता है। इस वजह से इसे सभी 5000 अपडेट को पूरा करने के लिए पहले लेनदेन की प्रतीक्षा करनी चाहिए।

यदि आप ताले को छोड़ना चाहते हैं, तो बस (छोटे) बैचों में अपडेट करें।

पी.एस. autocommit नियंत्रित करता है कि क्या प्रत्येक कथन स्वयं के लेन-देन में जारी किया गया है, लेकिन एक प्रश्न के निष्पादन को प्रभावित नहीं करता है




  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. एंटिटी फ्रेमवर्क में ग्रुपबी के अंदर (सीमा) सूची लें

  3. दूसरे दिन से खर्च किए गए घंटों की गणना करने और अगले दिन समाप्त होने के लिए SQL क्वेरी

  4. बीआईटी (1) का भंडारण आकार क्या है?

  5. तालिका में केवल एक कॉलम अपडेट करने के लिए CSV आयात करें