संक्षिप्त उत्तर:
select ENGINE, TABLE_NAME,Round( DATA_LENGTH/1024/1024) as data_length , round(INDEX_LENGTH/1024/1024) as index_length, round(DATA_FREE/ 1024/1024) as data_free from information_schema.tables where DATA_FREE > 0;
"आपको पता होना चाहिए" उत्तर
सबसे पहले आपको यह समझना चाहिए कि जब एक पंक्ति को अपडेट किया जाता है, तो मैसकल टेबल खंडित हो जाती है, इसलिए यह एक सामान्य स्थिति है। जब एक तालिका बनाई जाती है, तो डेटा के साथ एक डंप का उपयोग करके आयातित मान लेते हैं, सभी पंक्तियों को कई निश्चित आकार के पृष्ठों में कोई विखंडन के साथ संग्रहीत किया जाता है। जब आप एक परिवर्तनशील लंबाई की पंक्ति को अपडेट करते हैं, तो इस पंक्ति वाले पृष्ठ को परिवर्तनों को संग्रहीत करने के लिए दो या अधिक पृष्ठों में विभाजित किया जाता है, और इन नए दो (या अधिक) पृष्ठों में अप्रयुक्त स्थान को भरने वाले रिक्त स्थान होते हैं।
यह प्रदर्शन को प्रभावित नहीं करता है, जब तक कि विखंडन बहुत बढ़ता है। बहुत अधिक विखंडन क्या है, अच्छी तरह से देखते हैं कि आप क्या देख रहे हैं:
select ENGINE, TABLE_NAME,Round( DATA_LENGTH/1024/1024) as data_length , round(INDEX_LENGTH/1024/1024) as index_length, round(DATA_FREE/ 1024/1024) as data_free from information_schema.tables where DATA_FREE > 0;
DATA_LENGTH और INDEX_LENGTH आपके डेटा और इंडेक्स का उपयोग करने वाले स्थान हैं, और DATA_FREE सभी तालिका पृष्ठों (विखंडन) में अप्रयुक्त कुल बाइट्स है।
यहां वास्तविक उत्पादन तालिका का एक उदाहरण दिया गया है
| ENGINE | TABLE_NAME | data_length | index_length | data_free |
| InnoDB | comments | 896 | 316 | 5 |
इस मामले में हमारे पास एक तालिका का उपयोग करके (896 + 316) = 1212 एमबी है, और डेटा में 5 एमबी का निःशुल्क स्थान है। इसका अर्थ है "विखंडन का अनुपात":
5/1212 = 0.0041
... जो वास्तव में कम "विखंडन अनुपात" है।
मैं 0.2 (लगभग 20% रिक्त स्थान) के अनुपात के साथ तालिकाओं के साथ काम कर रहा हूं और प्रश्नों पर कभी धीमा नहीं पड़ता, भले ही मैं तालिका का अनुकूलन करता हूं, प्रदर्शन समान है। लेकिन 800MB की मेज पर एक अनुकूलन तालिका लागू करें बहुत समय लगता है और कई मिनटों के लिए तालिका को अवरुद्ध करता है, जो उत्पादन पर अव्यावहारिक है।
इसलिए, यदि आप विचार करते हैं कि आप प्रदर्शन में क्या जीतते हैं और समय एक टेबल को अनुकूलित करने में बर्बाद हो जाता है, तो मैं ऑप्टिमाइज़ नहीं करता।
यदि आपको लगता है कि भंडारण के लिए यह बेहतर है, तो अपना अनुपात देखें और देखें कि अनुकूलन करते समय आप कितनी जगह बचा सकते हैं। यह आमतौर पर बहुत अधिक नहीं है, इसलिए मैं ऑप्टिमाइज़ नहीं करना पसंद करता हूं।
और यदि आप अनुकूलन करते हैं, तो अगला अद्यतन एक पृष्ठ को दो या अधिक में विभाजित करके रिक्त स्थान बनाएगा। लेकिन यह खंडित तालिका को अपडेट करने के लिए तेजी से है न कि खंडित एक से, क्योंकि यदि तालिका खंडित है तो जरूरी नहीं कि एक पंक्ति में एक अद्यतन एक पृष्ठ को विभाजित करेगा।
मैं आशान्वित हूं कि इससे आपको सहायता मिलेगी।