INFORMATION_SCHEMA.TABLES से टेबल आकार प्राप्त करें
MySQL में, आप INFORMATION_SCHEMA.TABLES को क्वेरी करके प्रत्येक टेबल का आकार (डेटा + इंडेक्स) मेगाबाइट में प्राप्त कर सकते हैं।
क्वेरी
SELECT
TABLE_NAME AS `ALLTABLESNAME`,
ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `TABLESIZEIN(MB)`
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'yourDatabaseName'
ORDER BY (DATA_LENGTH + INDEX_LENGTH) ASC;
उदाहरण: 'business' डेटाबेस के लिए
mysql> SELECT TABLE_NAME AS `ALLTABLESNAME`,
-> ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `TABLESIZEIN(MB)`
-> FROM information_schema.TABLES
-> WHERE TABLE_SCHEMA = "business"
-> ORDER BY (DATA_LENGTH + INDEX_LENGTH) ASC;
नमूना आउटपुट:
+--------------------------+-----------------+ | ALLTABLESNAME | TABLESIZEIN(MB) | +--------------------------+-----------------+ | studentrecordwithmyisam | 0 | | querydatedemo | 1 | | rownumberdemo | 0 | | spacecolumn | 2 | | table1 | 0 | | tbldemotrail | 2 | | tblstudent | 0 | | timestamptodatedemo | 1 | | uniqueconstraintdemo | 0 | | usernameandpassworddemo | 2 | | addingunique | 5 | | bookindexes | 0 | | ... | ... | +--------------------------+-----------------+
कॉलम व्याख्या
- DATA_LENGTH: डेटा फ़ाइल का आकार (बाइट्स में)
- INDEX_LENGTH: इंडेक्स फ़ाइल का आकार (बाइट्स में)
- DATA_LENGTH + INDEX_LENGTH: कुल टेबल आकार
- / 1024 / 1024: बाइट्स को MB में बदलता है
- ROUND(): पूर्ण संख्या के लिए राउंड करता है
अधिक सटीक क्वेरी (GB में, 2 दशमलव)
SELECT
TABLE_NAME,
ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024, 2) AS SIZE_GB,
TABLE_ROWS,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'yourDatabaseName'
ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC;
नोट्स
- InnoDB के लिए, मान अनुमानित हैं (क्लस्टर्ड इंडेक्स संरचना के कारण)।
- बड़े डेटाबेस पर यह क्वेरी धीमी हो सकती है।
DATA_FREEखंडित स्थान दिखाता है जिसे OPTIMIZE TABLE से पुनर्प्राप्त किया जा सकता है।