फ़ाइल ibdata1
InnoDB बुनियादी ढांचे के लिए सिस्टम टेबलस्पेस है।
इसमें InnoDB के लिए महत्वपूर्ण जानकारी के लिए कई कक्षाएं शामिल हैं
- तालिका डेटा पृष्ठ
- टेबल इंडेक्स पेज
- डेटा शब्दकोश
- MVCC नियंत्रण डेटा
- अंतरिक्ष को पूर्ववत करें
- रोलबैक सेगमेंट
- डबल लिखने बफर (ओएस कैशिंग से बचने के लिए पृष्ठभूमि में लिखे गए पृष्ठ)
- बफ़र सम्मिलित करें (द्वितीयक अनुक्रमणिका में परिवर्तन)
कृपया ध्यान दें कि ibdata1 का स्थान InnoDB यूनिवर्स में (दाईं ओर)
आप innodb_file_per_tableibdata1
को सक्षम करके डेटा और इंडेक्स पेजों को अलग कर सकते हैं । यह किसी भी नई बनाई गई InnoDB तालिका को बाहरी फ़ाइल में डेटा और इंडेक्स पेज संग्रहीत करने का कारण बनेगा ।.ibd
उदाहरण
- डेटादिर / var / lib / mysql है
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;
, बनाता है /var/lib/mysql/mydb/mytable.frm
- innodb_file_per_table सक्षम किया गया, डेटा / इंडेक्स पेज संग्रहीत किए गए
/var/lib/mysql/mydb/mytable.ibd
- innodb_file_per_table अक्षम, डेटा / सूचकांक पृष्ठ ibdata1 में संग्रहीत
कोई बात नहीं जहां InnoDB तालिका संग्रहीत की जाती है, InnoDB की कार्यक्षमता को तालिका मेटाडेटा की तलाश में है और ACID अनुपालन और लेनदेन अलगाव का समर्थन करने के लिए MVCC जानकारी को संग्रहीत और पुनर्प्राप्त करना आवश्यक है ।
यहाँ ibdata1 से टेबल डेटा और इंडेक्स को अलग करने पर मेरे पिछले लेख हैं
आगे क्या करना है
आप जारी रख सकते हैं ibdata1 ने सब कुछ संग्रहीत किया है, लेकिन यह LVM स्नैपशॉट को वास्तविक ड्रगरी (मेरी व्यक्तिगत राय) बनाता है।
आपको My StackOverflow पोस्ट का उपयोग करने और उस फ़ाइल को स्थायी रूप से सिकोड़ने की आवश्यकता है।
कृपया इस क्वेरी को चलाएं:
SELECT
((POWER(1024,3)*94 - InnoDBDiskDataAndIndexes))/POWER(1024,3) SpaceToReclaim
FROM
(SELECT SUM(data_length+index_length) InnoDBDiskDataAndIndexes
FROM information_schema.tables WHERE engine='InnoDB') A;
यह बताएगा कि InnoDB Cleanup को लागू करने के बाद कितनी जगह बर्बाद हो सकती है।