यही कारण है कि ibdata1
सिकुड़ नहीं है MySQL का एक विशेष रूप से परेशान सुविधा है। ibdata1
फ़ाइल वास्तव में जब तक आप सभी डेटाबेस हटाने के लिए, फ़ाइलों को हटा दें और एक डंप को फिर से लोड सिकुड़ नहीं किया जा सकता।
लेकिन आप MySQL को कॉन्फ़िगर कर सकते हैं ताकि प्रत्येक तालिका, जिसमें उसकी अनुक्रमणिका भी शामिल है, एक अलग फ़ाइल के रूप में संग्रहीत है। उस तरह ibdata1
से बड़े रूप में विकसित नहीं होगा। बिल करविन की टिप्पणी के अनुसार यह डिफ़ॉल्ट रूप से MySQL के 5.6.6 संस्करण के रूप में सक्षम है।
कुछ समय पहले मैंने ऐसा किया था। हालाँकि, my.cnf
इसे सक्षम करने के लिए आपको प्रत्येक तालिका के लिए अलग-अलग फ़ाइलों का उपयोग करने के लिए अपने सर्वर को बदलने की आवश्यकता है :
[mysqld]
innodb_file_per_table=1
http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html
जैसा कि आप ibdata1
वास्तव में फ़ाइल को हटाने के लिए आपसे अंतरिक्ष को पुनः प्राप्त करना चाहते हैं :
- क्या एक
mysqldump
सभी डेटाबेस, प्रक्रियाओं, ट्रिगर्स आदि के सिवाय mysql
और performance_schema
डेटाबेस
- उपरोक्त 2 डेटाबेस को छोड़कर सभी डेटाबेस को छोड़ दें
- बंद करो mysql
- हटाएँ
ibdata1
और ib_log
फ़ाइलें
- Mysql शुरू करें
- डंप से पुनर्स्थापित करें
जब आप चरण 5 में MySQL शुरू करते हैं ibdata1
और ib_log
फ़ाइलों को फिर से बनाया जाएगा।
अब आप जाने के लिए फिट हैं। जब आप विश्लेषण के लिए एक नया डेटाबेस बनाते हैं, तो तालिकाओं को अलग-अलग ibd*
फ़ाइलों में स्थित किया जाएगा , अंदर नहीं ibdata1
। जैसा कि आप आमतौर पर डेटाबेस को जल्द ही छोड़ देते हैं, ibd*
फाइलें हटा दी जाएंगी।
http://dev.mysql.com/doc/refman/5.1/en/drop-database.html
आपने शायद इसे देखा है:
http://bugs.mysql.com/bug.php?id=1341
कमांड का उपयोग करके ALTER TABLE <tablename> ENGINE=innodb
या OPTIMIZE TABLE <tablename>
ibdata1 से डेटा और इंडेक्स पेजों को अलग-अलग फ़ाइलों को निकालने के लिए कर सकते हैं। हालाँकि, ibdata1 तब तक नहीं सिकुड़ेगा जब तक आप ऊपर दिए गए चरणों को नहीं करते।
के संबंध में information_schema
, जो न तो आवश्यक है और न ही गिराना संभव है। यह वास्तव में केवल पढ़ने वाले विचारों का एक गुच्छा है, न कि तालिकाओं का। और इनसे जुड़ी कोई फाइल नहीं है, डेटाबेस डायरेक्टरी भी नहीं है। informations_schema
स्मृति db-इंजन का उपयोग किया जाता है और छोड़ दिया और स्टॉप पर पुनर्जीवित कर रहा है / mysqld का पुनरारंभ करें। Https://dev.mysql.com/doc/refman/5.7/en/information-schema.html देखें ।