MySQL में "ओवरहेड" का क्या अर्थ है, इसके बारे में क्या बुरा है, और इसे कैसे ठीक किया जाए?


157

आसान सवाल है, लेकिन कुछ समय के लिए मुझे परेशान कर रहा है ...।

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

क्या "ऑप्टिमाइज़ टेबल" पर क्लिक करने से यह वास्तविक रूप से ठीक हो जाता है?

जवाबों:


147

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

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

मैं उद्धृत करता हूं:

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

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


1
@ जैस्पर क्या अनुकूलन की अवधि के दौरान तालिकाओं को पूरी तरह से लॉक किया गया है (पढ़ / लिख नहीं सकते हैं)?
पचेरियर

4
वह बोली कहाँ से उत्पन्न हुई? मुझे Google में बहुत सारे परिणाम मिल रहे हैं।
इयान हंटर

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

तकनीकी शर्तों की परवाह किए बिना, सही और आसान उदाहरण के लिए धन्यवाद।
श्यामाकवना .me

1
क्या "वास्तव में उच्च" माना जाता है?
टीवी-सी -15

87

यदि आप उस चीज़ के बारे में बात कर रहे हैं जो phpMyAdminकॉल करती है overhead, तो यह उसी डेटाफ़ाइल के आदर्श आकार के सापेक्ष तालिका डेटाफ़ाइल का वास्तविक आकार है (जैसे कि जब बैकअप से पुनर्स्थापित किया जाता है)।

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

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

आपको overheadदौड़ने से छुटकारा मिल सकता है जो OPTIMIZE TABLEआपकी तालिका और अनुक्रमित को कॉम्पैक्ट करेगा।


7
Mysql दस्तावेज़ीकरण आकार कहता है, "OPTIMIZE TABLE का उपयोग किया जाना चाहिए, यदि आपने किसी तालिका के बड़े हिस्से को हटा दिया है या यदि आपने चर-लंबाई वाली पंक्तियों वाली तालिका में कई बदलाव किए हैं", तो यह मेरा मामला है, धन्यवाद :)
bocluboa

8

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


1

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

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

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.