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

संपूर्ण तालिका को लॉक किए बिना तालिका बदलें

संक्षिप्त उत्तर:MySQL के लिए <5.6 ताले की आवश्यकता है। 5.6 बजे से, और InnoDB का उपयोग करते हुए, locks कई ALTER TABLE . के लिए आवश्यक नहीं हैं कॉलम जोड़ने सहित संचालन

यदि आप MySQL 5.5 या पुराने का उपयोग कर रहे हैं, तो इसे पूरे ऑपरेशन के लिए रीड लॉक और अंत में एक संक्षिप्त राइट लॉक मिलेगा।

ALTER TABLE के लिए MySQL दस्तावेज़ से ...

कहने का तात्पर्य यह है कि जब कोई कॉलम जोड़ा जाता है तो वह अधिकांश ऑपरेशन के लिए तालिका को लॉक कर देता है, फिर अंत में एक राइट लॉक प्राप्त करता है।

MySQL 5.6 ने ऑनलाइन DDL को जोड़ा InnoDB के लिए जो टेबल और इंडेक्स को बदलने जैसी कई चीजों को गति देता है और सुधारता है। तालिका में कॉलम जोड़ने के लिए अब टेबल लॉक की आवश्यकता नहीं होगी ऑपरेशन की शुरुआत और अंत में संभावित रूप से संक्षिप्त अनन्य ताले को छोड़कर

यह चाहिए स्वचालित रूप से होता है, लेकिन सुनिश्चित करने के लिए ALGORITHM=inplace . सेट करें और LOCK=none आपके ALTER TABLE . के लिए बयान।

एक अपवाद है...




  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 क्लॉज द्वारा SELECT और HAVING/GROUP BY के बीच सामान्य उप-अभिव्यक्तियों को समाप्त करता है

  3. MySQL डेटाबेस का नाम बदलें

  4. MySQL में SET autocommit=1 और START TRANSACTION के बीच अंतर (क्या मैंने कुछ याद किया है?)

  5. कमांड लाइन मैक से mysql तक नहीं पहुंच सकता