आसान सवाल है, लेकिन कुछ समय के लिए मुझे परेशान कर रहा है ...।
MySQL में "ओवरहेड" क्या है, और क्या मुझे चिंतित होना चाहिए?
क्या "ऑप्टिमाइज़ टेबल" पर क्लिक करने से यह वास्तविक रूप से ठीक हो जाता है?
आसान सवाल है, लेकिन कुछ समय के लिए मुझे परेशान कर रहा है ...।
MySQL में "ओवरहेड" क्या है, और क्या मुझे चिंतित होना चाहिए?
क्या "ऑप्टिमाइज़ टेबल" पर क्लिक करने से यह वास्तविक रूप से ठीक हो जाता है?
जवाबों:
ऐसा प्रतीत होता है कि ओवरहेड अस्थायी डिस्कस्पेस है जिसे डेटाबेस कुछ प्रश्नों को चलाने के लिए उपयोग करता है, इसलिए आपको केवल यह चिंता करनी चाहिए कि क्या यह वास्तव में उच्च है।
आप अपनी हार्ड ड्राइव के डीफ़्रैगमेंटिंग के साथ 'तालिका का अनुकूलन' कर सकते हैं।
मैं उद्धृत करता हूं:
हर डेटाबेस, समय के साथ, इसे एक इष्टतम प्रदर्शन स्तर पर बनाए रखने के लिए किसी प्रकार के रखरखाव की आवश्यकता होती है। हटाई गई पंक्तियों को पुनरावर्ती करना, अनुक्रमण करना, संपीड़ित करना, अनुक्रमणिका पथों को प्रबंधित करना, डीफ़्रैग्मेंट करना, आदि को mysql में ऑप्टिमाइज़ेशन और अन्य डेटाबेस में अन्य शब्दों के रूप में जाना जाता है। उदाहरण के लिए, IBM DB2 / 400 इसे REORGANIZE PHYSICAL FILE प्रोफाइल कहता है।
यह आपकी कार में तेल बदलने या ट्यून-अप करने की तरह है। आप सोच सकते हैं कि आपके पास वास्तव में नहीं है, लेकिन ऐसा करने से आपकी कार बहुत बेहतर चलती है, आपको बेहतर गैस लाभ मिलता है, आदि। बहुत सारे माइलेज प्राप्त करने वाली कार को अधिक बार धुन-अप की आवश्यकता होती है। एक डेटाबेस जिसे भारी उपयोग मिलता है, उसी की आवश्यकता होती है। यदि आप बहुत सारे UPDATE और / या DELETE संचालन कर रहे हैं, और विशेष रूप से यदि आपकी तालिकाओं में परिवर्तनशील लंबाई वाले स्तंभ (VARCHAR, TEXT, आदि) हैं, तो आपको 'er tuned' रखने की आवश्यकता है।
यदि आप उस चीज़ के बारे में बात कर रहे हैं जो phpMyAdmin
कॉल करती है overhead
, तो यह उसी डेटाफ़ाइल के आदर्श आकार के सापेक्ष तालिका डेटाफ़ाइल का वास्तविक आकार है (जैसे कि जब बैकअप से पुनर्स्थापित किया जाता है)।
प्रदर्शन कारणों से, MySQL
पंक्तियों को हटाने या अपडेट करने के बाद डेटाफ़ाइल्स को संकुचित नहीं करता है।
यह overhead
टेबल स्कैन के लिए खराब है, यानी जब आपकी क्वेरी को सभी तालिका मानों पर चलाने की आवश्यकता होती है, तो इसे अधिक खाली स्थान पर देखना होगा।
आपको overhead
दौड़ने से छुटकारा मिल सकता है जो OPTIMIZE TABLE
आपकी तालिका और अनुक्रमित को कॉम्पैक्ट करेगा।
ओवरहेड एक तालिका का Data_free है, जो कि आवंटित लेकिन अप्रयुक्त बाइट्स की संख्या है। हम इसे SQL कमांड SHOW TABLE STATUS द्वारा पा सकते हैं । यह आपकी तालिका के लिए आवंटित आकार में निःशुल्क स्थान है।
ऑप्टिमाइज़ टेबल बहुत समस्याग्रस्त हो सकती है। उदाहरण के लिए यदि किसी साइट पर तालिका का भारी उपयोग किया जाता है।
http://dev.mysql.com/doc/refman/5.1/en/optimize-table.html
किसी MyISAM या ARCHIVE तालिका के एक बड़े हिस्से को हटाने के बाद, या परिवर्तनशील-लंबी पंक्तियों (तालिकाएँ जिनमें VARCHAR, VARBINARY, BLOB, या TAB स्तंभ हैं) के साथ एक MyISAM या ARCHIVE तालिका में कई बदलाव किए हैं। हटाए गए पंक्तियों को एक लिंक की गई सूची में रखा जाता है और बाद में INSERT संचालन पुरानी पंक्ति के पदों का पुन: उपयोग करता है। <
मुझे विश्वास है कि मैंने इस व्यवहार की पुष्टि की है। और यह निश्चित रूप से वास्तव में बहुत उपयोगी होगा।