/ / क्यों mysql तालिका हमेशा लुभावनी करने के लिए प्रतिलिपि बनाते हैं? - mysql, प्रदर्शन, स्मृति, innodb

क्यों mysql तालिका हमेशा लुभावनी करने के लिए प्रतिलिपि बनाते हैं? - mysql, प्रदर्शन, स्मृति, innodb

मेरे पास mysql में कम से कम 2 के साथ innodb तालिका है1.5 जीबी के बारे में लाखों रिकॉर्ड और डेटा + इंडेक्स आकार मुझे तालिका में एक पंक्ति जोड़ने के लिए तालिका बदलने की जरूरत है। जब भी मैं बदलता हुआ टेबल mysql हमेशा आकर्षक करने के लिए प्रतिलिपि कर रहा हूँ। डाटाबेस मशीन में 100 जीबी रैम है इसलिए मुझे उम्मीद है कि बदलाव तालिका मेमोरी में की जानी चाहिए। मैंने सेट किया है:

tmp_table_size = 10G
max_heap_table_size = 10G
sort_buffer_size = 10G
innodb_buffer_pool_size=50G

लेकिन इससे मदद नहीं मिली है। प्रलोभन की प्रतिलिपि से बचने के लिए मैं mysql को कैसे कॉन्फ़िगर कर सकता हूं?

उत्तर:

जवाब के लिए 2 № 1

MySQL प्रदर्शन नहीं करता है ALTER TABLE किसी भी मामले में स्मृति में। किसी तालिका में एक नया कॉलम जोड़ने के लिए एक नई तालिका (नई स्कीमा के साथ) बनाने की आवश्यकता है, पुरानी तालिका से सभी पंक्तियों को नई तालिका में कॉपी करना, और परमाणु रूप से पुराने और नई तालिका को स्वैप करना। MySQL संस्करण के आधार पर, कुछ प्रकार के ALTER TABLE, जैसे कि नए इंडेक्स जोड़ने, "ऑनलाइन" किया जा सकता है जहां ऑपरेशन के दौरान अन्य ऑपरेशन अवरुद्ध नहीं होते हैं। हालांकि यह अभी भी आपके प्रश्न के संबंध में "डिस्क पर" किया गया है।