2009-02-19 9 views
137

सरल सवाल, लेकिन यह मुझे थोड़ी देर के लिए परेशान कर रहा है ....MySQL में "ओवरहेड" का अर्थ क्या है, इसके बारे में क्या बुरा है, और इसे कैसे ठीक किया जाए?

MySQL में "ओवरहेड" क्या है, और क्या मुझे चिंतित होना चाहिए?

"अनुकूलित तालिका" पर क्लिक करके इसे वास्तविक के लिए ठीक करें?

उत्तर

134

ऐसा प्रतीत होता है कि ओवरहेड अस्थायी डिस्कस्पेस है जो डेटाबेस कुछ प्रश्नों को चलाने के लिए उपयोग किया जाता है, इसलिए आपको केवल चिंता करना चाहिए यदि यह वास्तव में उच्च हो जाता है।

आप अपनी हार्ड ड्राइव के डीफ्रैगमेंटिंग के साथ 'तालिका को अनुकूलित करना' की तुलना कर सकते हैं।

मैं बोली:

हर डेटाबेस, समय के साथ, के रखरखाव के कुछ फार्म की आवश्यकता होती है यह एक इष्टतम प्रदर्शन स्तर पर रखना होगा। हटाए गए पंक्तियों को पर्ज करना, इंडेक्स पथ, डीफ्रैग्मेंटिंग इत्यादि का शोधन, संपीड़न, प्रबंधन है जो mysql और अन्य डेटाबेस में अन्य शर्तों में ऑप्टिमाइज़ेशन के रूप में जाना जाता है। उदाहरण के लिए, आईबीएम डीबी 2/400 इसे पुनर्जन्म भौतिक फ़ाइल सदस्य कहते हैं।

यह आपकी कार में आपकी कार या ट्यून-अप प्राप्त करने जैसा है। आप सोच सकते हैं कि आपको वास्तव में नहीं करना है, लेकिन द्वारा आपकी कार बहुत बेहतर चलती है, आपको बेहतर गैस लाभ मिलता है, आदि। कार जो बहुत सारे माइलेज के लिए ट्यून-अप की आवश्यकता होती है। एक डेटाबेस जो भारी उपयोग के लिए आवश्यक है। यदि आप बहुत सारे अद्यतन और/या DELETE संचालन कर रहे हैं, और विशेष रूप से यदि आपकी तालिका में परिवर्तनीय लंबाई कॉलम (VARCHAR, टेक्स्ट, आदि) है, तो आपको की आवश्यकता है ताकि 'tuned up' रखा जा सके।

+1

@Jasper ऑप्टिमाइज़ेशन की अवधि के दौरान टेबल पूरी तरह से लॉक (पढ़/लिख नहीं सकते) हैं? – Pacerier

+4

वह उद्धरण कहां से आया था? मुझे Google में बहुत सारे परिणाम मिल रहे हैं। –

+0

हम कैसे जानते हैं कि ओवरहेड बार-बार कारण बनता है? – mahen3d

75

आप बात यह है कि phpMyAdmin कॉल overhead, तो यह एक ही datafile के आदर्श आकार के लिए एक मेज datafile रिश्तेदार के वास्तविक आकार है के बारे में बात कर रहे हैं (जैसे कि जब सिर्फ बैकअप से पुनर्स्थापित)।

प्रदर्शन कारणों से, MySQL डेटाफाइल को हटाए या अपडेट करने के बाद डेटाफाइल को कॉम्पैक्ट नहीं करता है।

यह overhead तालिका स्कैन के लिए खराब है, i। ई। जब आपकी क्वेरी को सभी तालिका मानों पर चलाने की आवश्यकता होती है, तो उसे और खाली स्थान देखने की आवश्यकता होगी।

आप से OPTIMIZE TABLE चलाकर छुटकारा पा सकते हैं जो आपकी तालिका और अनुक्रमणिका को कॉम्पैक्ट करेगा।

+6

MySQL दस्तावेज़ का आकार कहता है "ऑप्टिमाइज़ टेबल का उपयोग किया जाना चाहिए यदि आपने किसी तालिका का एक बड़ा हिस्सा हटा दिया है या यदि आपने चर-लंबाई वाली पंक्तियों वाली तालिका में कई बदलाव किए हैं, तो यह मेरा मामला है, धन्यवाद :) – boclodoa

7

ओवरहेड एक तालिका के Data_free है, जो आवंटित लेकिन अप्रयुक्त बाइट्स की संख्या है। हम इसे एसक्यूएल कमांड द्वारा तालिका तालिका दिखा सकते हैं। यह आपकी मेज के आवंटित आकार में खाली स्थान है।

1

अनुकूलित तालिका बहुत समस्याग्रस्त हो सकती है। उदाहरण के लिए यदि किसी साइट पर तालिका का भारी उपयोग किया जाता है।

http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html

एक MyISAM या संग्रह तालिका का एक बड़ा हिस्सा चर लंबाई पंक्तियों (टेबल है VARCHAR, VARBINARY, ब्लॉब, या पाठ के साथ एक MyISAM या संग्रह तालिका में कई परिवर्तन हटाने, या करने के बाद कॉलम)। हटाई गई पंक्तियां एक लिंक्ड सूची में रखी जाती हैं और बाद में आईएनएसईआरटी ऑपरेशंस पुरानी पंक्ति की स्थिति का पुन: उपयोग करती है। <

मेरा मानना ​​है कि मैंने इस व्यवहार की पुष्टि की है। और यह निश्चित रूप से वास्तव में बहुत उपयोगी होगा।

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

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