MySQL डाटाबेस का सही आकार कैसे प्राप्त करें?


144

मैं जानना चाहूंगा कि वेब होस्ट का चयन करने के लिए मेरा MySQL डेटाबेस कितनी जगह का उपयोग करता है। SHOW TABLE STATUS LIKE 'table_name'जब मैंने क्वेरी की तो मुझे कमांड मिली , मुझे कुछ इस तरह मिला:

Name       | Rows | Avg. Row Length | Data_Length | Index Length
----------   ----   ---------------   -----------   ------------
table_name   400          55            362000        66560
  • नंबर गोल हैं।

तो क्या मेरे पास इस टेबल के लिए 362000 या 400 * 362000 = 144800000 बाइट्स हैं? और इंडेक्स लेंथ का क्या मतलब है? धन्यवाद !


आपके पास 362000 + 66560 है। Data_Length + अनुक्रमणिका की लंबाई
मंडज़ा


यह पृष्ठ आपको सटीक उत्तर दे देगा rathishkumar.in/2017/12/…
रथिश

जवाबों:


281

एस प्रकाश से, MySQL फोरम में पाया गया :

SELECT table_schema "database name",
    sum( data_length + index_length ) / 1024 / 1024 "database size in MB",
    sum( data_free )/ 1024 / 1024 "free space in MB"
FROM information_schema.TABLES
GROUP BY table_schema; 

या आसान कॉपी-पेस्टिंग के लिए एक ही लाइन में:

SELECT table_schema "database name", sum( data_length + index_length ) / 1024 / 1024 "database size in MB", sum( data_free )/ 1024 / 1024 "free space in MB" FROM information_schema.TABLES GROUP BY table_schema; 

7
एमबी में फ्री स्पेस का क्या मतलब है? मेरे पास 100 जीबी मुफ्त है लेकिन यह 1 जीबी से कम की रिपोर्ट करता है।
बर्थ

1
@ दस्तावेज के अनुसार, इसका मतलब है " इनोबीडी टेबल के लिए बाइट्स में खाली स्थान"। दुर्भाग्य से कोई स्पष्टीकरण नहीं क्या है कि इसका मतलब है: - \
ckujau

13
बाइट्स में खाली जगह का मतलब बिल्कुल यही है - इसका मतलब है कि अंतरिक्ष की मात्रा को फिर से प्राप्त किया जा सकता है यदि आप तालिका को ऑप्टिमाइज़ करते हैं या खरोंच से तालिका का पुनर्निर्माण करते हैं। जब डेटाबेस डिस्क पर जानकारी संग्रहीत करते हैं, तो वे इसे ब्लॉकों में आवंटित करते हैं; किसी रिकॉर्ड को हटाने से अक्सर उपयोग किए गए ब्लॉक के बीच एक ब्लॉक को मुक्त किया जाता है, और उस स्थान का उपयोग करने के लिए अन्य सभी ब्लॉकों को स्थानांतरित करना बहुत महंगा है, इसलिए इसे "मुक्त" के रूप में चिह्नित किया गया है। स्थान का उपयोग बाद में डेटाबेस इंजन द्वारा ही किया जा सकता है, या OPTIMIZE TABLE foo(MyISAM) का उपयोग करके पुनः प्राप्त किया जा सकता है , या InnoDB तालिकाओं के लिए पुनः + विश्लेषण किया जा सकता है ।
razzed

92

आप निम्नलिखित कमांड मैसूर क्लाइंट में चलाकर अपने मैसकल डेटाबेस का आकार प्राप्त कर सकते हैं

SELECT  sum(round(((data_length + index_length) / 1024 / 1024 / 1024), 2))  as "Size in GB"
FROM information_schema.TABLES
WHERE table_schema = "<database_name>"

30

यदि आप phpMyAdmin का उपयोग करते हैं, तो यह आपको यह जानकारी बता सकता है।

बस "डेटाबेस" (शीर्ष पर मेनू) पर जाएं और "सक्षम आंकड़े" पर क्लिक करें।

आप कुछ इस तरह देखेंगे:

phpMyAdmin स्क्रीनशॉट

यह संभवतः कुछ सटीकता खो देगा क्योंकि आकार ऊपर जाते हैं, लेकिन यह आपके उद्देश्यों के लिए पर्याप्त सटीक होना चाहिए।


मैं वर्तमान में 000webhost का उपयोग कर रहा हूं। इसमें phpMyAdmin है, लेकिन मुझे "सक्षम आंकड़े" चेकबॉक्स नहीं मिला। क्या (शायद) इसके लिए एक प्रश्न है?
मार्विन

1
@marvin खैर, यह संभव है कि webhost में phpMyAdmin का पुराना संस्करण स्थापित हो। मुझे नहीं पता कि इस सुविधा को किस संस्करण में पेश किया गया था।
रादु मुराज़े

अपने साइडबार में, शीर्ष पर होम आइकन पर क्लिक करें जो आपको होम पेज पर ले जाता है। सही विंडो में, 'डेटाबेस' पर क्लिक करें। यह डेटाबेस की एक स्तंभ तालिका प्रदर्शित करता है, जिसके नीचे एक लिंक है, जिसे 'सांख्यिकी सक्षम करें'
VeeK

8

यदि आप इसे MB में ढूंढना चाहते हैं तो ऐसा करें

SELECT table_schema                                        "DB Name", 
   Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
FROM   information_schema.tables 
GROUP  BY table_schema; 

इस उत्तर के एसक्यूएल प्रकट होता है स्निपेट की एक प्रति होने की stackoverflow.com/a/1733523/1200542
एरियल Allon

3

मूल रूप से दो तरीके हैं: क्वेरी DB (डेटा लंबाई + सूचकांक लंबाई) या फ़ाइलों का आकार जांचें। सूचकांक की लंबाई सूचकांक में संग्रहीत डेटा से संबंधित है।

सब कुछ यहाँ वर्णित है:

http://www.mkyong.com/mysql/how-to-calculate-the-mysql-database-size/


खैर, यह पृष्ठ मेरे प्रश्न का स्रोत है। लेकिन इस क्वेरी के अनुसार, मेरे पास 0.5 एमबी है, जो मुझे बहुत सुरक्षित छोड़ देता है। मुझे आशा है कि यह सच है :) धन्यवाद!
मार्विन

0

किसी भी उत्तर में ओवरहेड आकार और तालिकाओं के मेटाडेटा आकार शामिल नहीं हैं।

यहां डेटाबेस द्वारा आवंटित "डिस्क स्थान" का अधिक सटीक अनुमान है।

SELECT ROUND((SUM(data_length+index_length+data_free) + (COUNT(*) * 300 * 1024))/1048576+150, 2) AS MegaBytes FROM information_schema.TABLES WHERE table_schema = 'DATABASE-NAME'

5
क्या आप विस्तृत कर सकते हैं? विशेष रूप से आपके स्थिरांक 300और 150?
मेलेबियस

कृपया, क्या आप विस्तृत कर सकते हैं?
एलन एंड्रेड

0

SUM(Data_free) मान्य हो सकता है या नहीं भी । यह के इतिहास पर निर्भर करता है innodb_file_per_table। अधिक चर्चा यहाँ पाई जाती है



0

यदि आप MySql Workbench का उपयोग कर रहे हैं, तो डेटाबेस आकार, प्रत्येक तालिका आकार, सूचकांक आकार आदि के सभी विवरण प्राप्त करना बहुत आसान है।

  1. स्कीम पर राइट क्लिक करें
  2. का चयन करें स्कीमा इंस्पेक्टर विकल्प

    यहाँ छवि विवरण दर्ज करें

  3. यह स्कीमा आकार के सभी विवरण दिखाता है

  4. प्रत्येक तालिका का आकार देखने के लिए टेबल्स टैब का चयन करें ।

    यहाँ छवि विवरण दर्ज करें

  5. तालिका आकार डेटा लेनिंग कॉलम में डिप्लोमा किया है


0

यदि आप सभी MySQL डेटाबेस का आकार ढूंढना चाहते हैं, तो हमें यह कमांड, यह मेगाबाइट में उनके संबंधित आकार दिखाएगा;

SELECT table_schema "database", sum(data_length + index_length)/1024/1024 "size in MB" FROM information_schema.TABLES GROUP BY table_schema;

यदि आपके पास बड़े डेटाबेस हैं, तो आप गीगाबाइट में परिणाम दिखाने के लिए निम्न कमांड का उपयोग कर सकते हैं;

SELECT table_schema "database", sum(data_length + index_length)/1024/1024/1024 "size in GB" FROM information_schema.TABLES GROUP BY table_schema;

यदि आप केवल विशिष्ट डेटाबेस का आकार दिखाना चाहते हैं, उदाहरण के लिए YOUR_DATABASE_NAME, आप निम्नलिखित क्वेरी का उपयोग कर सकते हैं;

SELECT table_schema "database", sum(data_length + index_length)/1024/1024/1024 "size in GB" FROM information_schema.TABLES WHERE table_schema='YOUR_DATABASE_NAME' GROUP BY table_schema;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.