2012-01-06 14 views
7

एक MyISAM तालिका में कॉलम जोड़ते समय, MySQL> कॉपी> ड्रॉप> नाम बदलें। मेरे पास एक सारणी है जो पर्याप्त रूप से बड़ी है कि इसे सर्वर के शेष खाली स्थान में डुप्लिकेट नहीं किया जा सकता है। कॉलम जोड़ने का प्रयास करते हुए डिस्क भरने के परिणामस्वरूप। समय यहां कोई मुद्दा नहीं है, न ही तालिका उपलब्धता, बस डिस्क स्थान है।MySQL अल्टर टेबल टेबल पर बहुत बड़ा

अन्य सर्वर पर डेटा की प्रतिलिपि, छोटा, फेरबदल करने, और नकल वापस की कमी है, वहाँ के बिना यह एक अस्थायी तालिका बनाने और सभी डेटा की प्रतिलिपि एक MyISAM तालिका करने के लिए एक स्तंभ जोड़ने के लिए एक तरीका है?

उत्तर

3

आप एक नई, खाली तालिका बना सकते हैं, मैन्युअल रूप से डेटा को मैन्युअल रूप से स्थानांतरित कर सकते हैं (नए में INSERT, पंक्तियों की एक निश्चित संख्या से पुराने हटाएं), पुरानी तालिका को छोड़ दें और नई तालिका का नाम बदलें। अनिवार्य रूप से MySQL क्या करता है, लेकिन इसे कॉपी करने के बजाय डेटा को स्थानांतरित करता है, जिससे आपको कम स्थान का उपयोग करने की अनुमति मिलनी चाहिए।

+0

मुझे इससे डर था, लेकिन कम मैन्युअल दृष्टिकोण की उम्मीद थी। यह हो सकता है कि मैं क्या कर रहा हूँ। – Umbrella

+1

आखिरकार, यह दृष्टिकोण विफल हुआ, मेरे टुकड़े के आकार के बावजूद डिस्क भरना। MySQL ने हटाए गए पंक्तियों से डिस्क को खाली नहीं किया है। डिस्क भरने वाली डिस्क को मुक्त करने के लिए MySQL को बताने के लिए ऑप्टिमाइज़ करना। – Umbrella

+0

मुझे लगता है कि यह InnoDB के साथ बेहतर काम करेगा, क्योंकि नई तालिका idb फ़ाइल में मुफ्त पृष्ठों का पुन: उपयोग करेगी। मुझे डर है कि मेरे पास कोई अन्य विचार नहीं है, क्षमा करें। –

1

सामान्य रूप से मैं अपनी सबसे बड़ी तालिका को पुनर्निर्माण करने में सक्षम होने के लिए पर्याप्त खाली स्थान रखने की कोशिश करता हूं। यह आवश्यक होने पर मुझे OPTIMIZE TABLE या ALTER TABLE चलाने की अनुमति देता है।

क्या आपके पास अपने सर्वर पर एक और डिस्क है?

जब किसी दिए गए तालिका को पुनर्निर्माण करने के लिए स्थान बहुत तंग होता है, तो मेरा पसंदीदा वर्कअराउंड अस्थायी रूप से किसी अन्य तालिका को अलग डिस्क वॉल्यूम में ले जाना है। मैं MySQL को रोककर, प्रासंगिक डेटा फ़ाइलों (MYD और MYI, या ibd) को स्थानांतरित करके, और फिर मूल स्थान पर एक सिम्लिंक बना रहा हूं जो नए स्थान पर इंगित करता है, और MySQL प्रारंभ करता है। एक बार तालिका पुनर्निर्माण करने के बाद मैं उस प्रक्रिया को अन्य तालिकाओं को वापस अपने मूल स्थान पर ले जाने के लिए उलट देता हूं।

+1

दुर्भाग्यवश इस होस्ट से कोई अतिरिक्त संग्रहण नहीं है। – Umbrella

संबंधित मुद्दे