Ibdata फ़ाइल के लिए कितना बड़ा है?


9

मेरी ibdata फ़ाइल बहुत बड़ी है, कम से कम यह मुझे बहुत बड़ी लगती है। क्या यह अत्यधिक है या बुरा नहीं है?

-rw-rw---- 1 mysql mysql  15G Apr 18 10:11 ibdata1

4
आपकी ibdata फ़ाइल बहुत छोटी है।
जेफ फेरलैंड

उस फ़ाइल को छोटी मात्रा में विभाजित करना (कहें 4 जी) प्रदर्शन के लिए बेहतर या बुरा होगा?
nachito

जवाबों:


13

जब यह एक समस्या हो सकती है

यदि आप show table statusएक मेज पर चलते हैं और Data_freeफ़ील्ड आपकी ibdata1फ़ाइल के आकार का विशाल हिस्सा बनाती है , तो आपके पास बहुत सारा बर्बाद स्थान हो सकता है। डालने / हटाने का एक बड़ा सौदा यह एक मुद्दा बना देगा। यदि यह मामला है और क्षणिक प्रविष्टि और विलोपन आपके डेटा के थोक बनाते हैं, तो आपके पास प्रति तालिका फ़ाइल के लिए एक अच्छा मामला है।

यह एक स्वचालित "हाँ" नहीं है, हालांकि। InnoDB फ़ाइलों के अंदर आंतरिक विखंडन के बारे में दुनिया में बहुत सी बातें हैं, लेकिन उन्हें फ़ाइल-प्रति-तालिका के रूप में फ़ाइल-सिस्टम में डाल देने से डेटाबेस खंड के बजाय फ़ाइल खंड में आपका विखंडन हो जाता है।

क्यों यह आमतौर पर एक समस्या नहीं है

एक फ़ाइल के बजाय एक फाइल सिस्टम के रूप में अपनी InnoDB फ़ाइल के बारे में सोचो। यदि आपके पास बहुत सारी फाइलें हैं, तो आपको एक बड़ी फाइल सिस्टम की आवश्यकता होगी।

अधिकांश भाग के लिए, फाइल सिस्टम डेटा की टेराबाइट्स और फाइलों की अनकही संख्या को संभालने के लिए वास्तव में अच्छी तरह से स्केलिंग करते हैं। कभी-कभी वे खराब अनुक्रमण के साथ समस्याओं में भाग लेते हैं (उदाहरण के लिए, प्रदर्शन प्रभाव से पहले एक निर्देशिका में फ़ाइलों की संख्या तक सीमित), लेकिन अधिकांश भाग के लिए आधुनिक फाइल सिस्टम टेराबाइट रेंज में अच्छी तरह से रॉक कर सकता है।

InnoDB उसी तरह कार्य करता है। आपकी डेटा फ़ाइल का आकार बहुत बड़ा हो सकता है ... और बड़े फ़ाइल सिस्टम की तरह, जो आपके डेटा का बैकअप लेने के साथ समस्याएँ प्रस्तुत कर सकते हैं। हालाँकि, अपने फाइल सिस्टम को कई विभाजनों में विभाजित करने से इस समस्या में मदद नहीं मिलती है, न ही निर्दोष को हेरफेर करने की कोशिश होती है। जबकि आप innodb_file_per_table का उपयोग कर सकते हैं , मैं शायद ही कभी इसकी सलाह देता हूं।

आपके फाइल सिस्टम की तरह, बेहतर जवाब यह है कि आंतरिक रूप से सीमाएं जानें और उसके भीतर काम करें। अनुक्रमित समझें और उन्हें उचित रूप से लागू करें। InnoDB को विभाजित करने की कोशिश में काम मत करो, यह उस के लिए नहीं है।

चूँकि मैं रचनात्मक रूप से अवधारणा को व्यक्त करने के लिए संघर्ष कर रहा हूँ, यहाँ एक त्वरित पढ़ा गया है कि इस शब्द को मैं इससे बेहतर कर सकता हूँ: टेराबाइट्स बड़ा डेटा नहीं है, पेटाबाइट्स है

मुझे याद है कि वास्तव में पुरानी MySQL मार्केटिंग स्लाइड जहां ग्राहक कुछ टेराबाइट्स के साथ डेटा वेयरहाउस चला रहा था। बहुत साल पहले। InnoDB या MyISAM, दोनों काम करेंगे। यह रैक MySQL सामान से मानक है।

एक 15GB डेटाबेस पसीना मत करो।


ऐसा लगता है कि मैं केवल 50% से कम उपयोग कर रहा हूँ। InnoDB free: 7364608 kB
नचितो

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

6

ibdata फाइलें सिकुड़ती नहीं हैं - यदि आपने हाल ही में कुछ टेबलों को गिरा दिया है या बहुत सी पंक्तियों को हटा दिया है - तो आपके कॉन्फिग में इनोडोड मुफ्त फाइल फाइल सिस्टम में वापस नहीं आएगा। मैं आपको सुझाव दूंगा:

  • mysqldump के साथ अपने सभी डेटा का बैकअप लें
  • my.cnf innodb_file_per_table निर्देश में जोड़ें
  • mysql को पुनरारंभ करें
  • innodb इंजन का उपयोग कर सभी डेटाबेस को छोड़ें
  • mysql बंद करो
  • ibdata फ़ाइल निकालें
  • rm ib_logfile [01]
  • mysql शुरू करें, अगर सब ठीक है तो syslog की जांच करें
  • अपने डंप को पुनः लोड करें

इस तरह से आप अंतरिक्ष को पुनः प्राप्त करने में सक्षम होंगे जब भी आप निर्दोष तालिका / डेटाबेस को छोड़ देंगे - संबंधित आईडीबी फाइलें तुरंत हटा दी जाएंगी।


मैं समझता हूँ कि यह कभी भी w / o डंपिंग और टेबलों को फिर से लोड नहीं कर पाएगा। हालाँकि, अगर मैंने InnoDB डेटाबेस को गिरा दिया है, तो क्या यह फिर से बढ़ने से पहले उस "मुक्त" स्थान का उपयोग करेगा?
nachito

1
@nachito हाँ, यह होगा।
जेफ फेरलैंड


आपका जवाब सिर्फ एक सीधा-सीधा सुझाव है, बिना इस मुद्दे को उलझाए जैसे मेरा जवाब लगता है। +1 !!!
रोलैंडमाइसीडीडीबीए

1
ठीक है, उत्तर डेटा फ़ाइलों द्वारा उपयोग किए जाने वाले स्थान को कम करने का एक समाधान है, लेकिन यह उस से संबंधित योग्यता की चर्चा नहीं है, और जैसा कि मैंने पढ़ा है यह सवाल है। क्या 15GB ibdata फ़ाइल एक बड़ी बात है?
जेफ फेरलैंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.