Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में एक टेबल का आकार कैसे प्राप्त करें

अधिकांश रिलेशनल डेटाबेस की तरह, MySQL डेटाबेस के बारे में ही उपयोगी मेटाडेटा प्रदान करता है। जबकि अधिकांश अन्य डेटाबेस इस जानकारी को catalog . के रूप में संदर्भित करते हैं , आधिकारिक MySQL दस्तावेज़ INFORMATION_SCHEMA . को संदर्भित करता है मेटाडेटा tables . के रूप में ।

नाम चाहे जो भी हो, इन INFORMATION_SCHEMA . द्वारा प्रदान की गई जानकारी मायने रखती है टेबल। views . से सब कुछ और user_privilieges columns . के लिए और tables INFORMATION_SCHEMA . में पाया जा सकता है . हमारे उद्देश्यों के लिए हम विशेष रूप से tables . में रुचि रखते हैं मेटाडेटा, जिसे हम वास्तव में सिस्टम में विभिन्न तालिकाओं के आकार को निकालने के लिए क्वेरी कर सकते हैं।

एकल डेटाबेस से तालिका आकार सूचीबद्ध करें

जैसा कि आधिकारिक दस्तावेज़ीकरण में देखा जा सकता है, INFORMATION_SCHEMA.TABLES तालिका में लगभग 20 स्तंभ हैं, लेकिन तालिकाओं द्वारा उपयोग किए जाने वाले डिस्क स्थान की मात्रा निर्धारित करने के उद्देश्य से, हम विशेष रूप से दो स्तंभों पर ध्यान केंद्रित करेंगे:DATA_LENGTH और INDEX_LENGTH

  • DATA_LENGTH तालिका में सभी डेटा की लंबाई (या आकार) है (bytes . में )।
  • INDEX_LENGTH तालिका के लिए अनुक्रमणिका फ़ाइल की लंबाई (या आकार) है (bytes . में भी )।

इस जानकारी के साथ, हम एक क्वेरी निष्पादित कर सकते हैं जो प्रत्येक के डिस्क स्थान (आकार) के साथ एक विशिष्ट डेटाबेस में सभी तालिकाओं को सूचीबद्ध करेगी। हम थोड़ा अधिक कट्टर भी हो सकते हैं और सामान्य आकार के मानों को bytes . से परिवर्तित कर सकते हैं megabytes . जैसे अधिकांश लोगों के लिए अधिक उपयोगी और समझने योग्य चीज़ में ।

SELECT
  TABLE_NAME AS `Table`,
  ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)`
FROM
  information_schema.TABLES
WHERE
  TABLE_SCHEMA = "bookstore"
ORDER BY
  (DATA_LENGTH + INDEX_LENGTH)
DESC;

इस उदाहरण में bookstore . का उपयोग करते हुए डेटाबेस, हम DATA_LENGTH . को मिला रहे हैं और INDEX_LENGTH bytes . के रूप में , फिर इसे 1024 . से विभाजित करें दो बार kilobytes में बदलने के लिए और फिर megabytes . हमारा परिणाम सेट कुछ इस तरह दिखेगा:

+----------------------------------+-----------+
| Table                            | Size (MB) |
+----------------------------------+-----------+
| book                             |       267 |
| author                           |        39 |
| post                             |        27 |
| cache                            |        24 |
...

यदि आप डेटाबेस में सभी तालिकाओं की परवाह नहीं करते हैं और केवल एक विशेष तालिका का आकार चाहते हैं, तो आप बस AND TABLE_NAME = "your_table_name" जोड़ सकते हैं करने के लिए WHERE खंड। यहां हम केवल book . के बारे में जानकारी चाहते हैं तालिका:

SELECT
  TABLE_NAME AS `Table`,
  ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)`
FROM
  information_schema.TABLES
WHERE
    TABLE_SCHEMA = "bookstore"
  AND
    TABLE_NAME = "book"
ORDER BY
  (DATA_LENGTH + INDEX_LENGTH)
DESC;

उम्मीद के मुताबिक परिणाम अब इस प्रकार हैं:

+-------+-----------+
| Table | Size (MB) |
+-------+-----------+
| book  |       267 |
+-------+-----------+
1 row in set (0.00 sec)

सभी डेटाबेस से सभी तालिका आकारों की सूची बनाएं

यदि आप किसी ऐसी समस्या का सामना कर रहे हैं जहां आपका डेटाबेस आकार में बढ़ रहा है, लेकिन आप नहीं जानते कि कौन सी तालिका अपराधी है, तो सभी के आकार के लिए क्वेरी करना उपयोगी हो सकता है सभी . के भीतर तालिकाएं पूरे सिस्टम में डेटाबेस। इसे निम्न क्वेरी के साथ आसानी से पूरा किया जा सकता है:

SELECT
  TABLE_SCHEMA AS `Database`,
  TABLE_NAME AS `Table`,
  ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)`
FROM
  information_schema.TABLES
ORDER BY
  (DATA_LENGTH + INDEX_LENGTH)
DESC;

यह न केवल तालिका का आकार लौटाएगा, बल्कि तालिका का नाम और मूल डेटाबेस भी इससे जुड़ा होगा।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं किसी विशिष्ट तालिका के लिए MySQL इंजन प्रकार की जांच कैसे कर सकता हूं?

  2. अपने खुद के ऐप पर एडमिन कैसे इनस्टॉल करें

  3. SQL अनुक्रमणिका का परिचय

  4. MySQL:एक सेलेक्ट स्टेटमेंट केस संवेदनशील है?

  5. MySQL में अल्पविराम से अलग की गई सूची के रूप में क्वेरी परिणाम कैसे लौटाएं?