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

टेबल को लॉक किए बिना टेबल बदलें?

केवल अन्य विकल्प मैन्युअल रूप से वही करना है जो कई RDBMS सिस्टम वैसे भी करते हैं...
- एक नई तालिका बनाएं

फिर आप पुरानी तालिका की सामग्री को एक बार में एक चंक पर कॉपी कर सकते हैं। स्रोत तालिका में किसी भी INSERT/UPDATE/DELETE से हमेशा सतर्क रहते हुए। (एक ट्रिगर द्वारा प्रबंधित किया जा सकता है। हालांकि यह धीमा हो जाएगा, यह लॉक नहीं है...)

एक बार समाप्त होने पर, स्रोत तालिका का नाम बदलें, फिर नई तालिका का नाम बदलें। अधिमानतः लेन-देन में।

एक बार समाप्त होने पर, उस तालिका का उपयोग करने वाली किसी भी संग्रहीत कार्यविधियों आदि को पुन:संकलित करें। निष्पादन योजनाएँ संभवतः अब मान्य नहीं होंगी।

संपादित करें:

इस सीमा के थोड़े खराब होने के बारे में कुछ टिप्पणियां की गई हैं। इसलिए मैंने सोचा कि मैं इस पर एक नया दृष्टिकोण रखूंगा कि यह ऐसा क्यों है...

  • नई फ़ील्ड जोड़ना हर पंक्ति पर एक फ़ील्ड बदलने जैसा है।
  • पंक्ति लॉक की तुलना में फ़ील्ड लॉक बहुत कठिन होंगे, टेबल लॉक की परवाह न करें।

  • आप वास्तव में डिस्क पर भौतिक संरचना को बदल रहे हैं, प्रत्येक रिकॉर्ड चलता रहता है।
  • यह वास्तव में संपूर्ण तालिका पर एक अद्यतन की तरह है, लेकिन अधिक प्रभाव के साथ...


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. QueryException SQLSTATE [HY000] [1045] उपयोगकर्ता 'होमस्टेड' @ 'लोकलहोस्ट' के लिए प्रवेश निषेध (पासवर्ड का उपयोग करके:हाँ)

  2. UTF-8:डेटाबेस में सही ढंग से दिखा रहा है, हालांकि utf-8 वर्णसेट के बावजूद HTML में नहीं है

  3. MySQL के साथ रेल पर रूबी कैसे स्थापित करें और इसे एक कदम दर कदम गाइड के साथ काम करें?

  4. MySQL क्वेरी:UNION का उपयोग करना और चयन के भाग के रूप में पंक्ति संख्या प्राप्त करना

  5. जेरा डीबी से स्प्रिंट प्रारंभ और समाप्ति तिथियां निकालने का सबसे आसान तरीका क्या है?