संक्षिप्त उत्तर: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
. के लिए बयान।
एक अपवाद है...