क्या यह निर्धारित करने का एक त्वरित तरीका है कि किसी विशेष MySQL तालिका को कितना डिस्क स्थान ले रहा है? तालिका MyISAM या Innodb हो सकती है।
क्या यह निर्धारित करने का एक त्वरित तरीका है कि किसी विशेष MySQL तालिका को कितना डिस्क स्थान ले रहा है? तालिका MyISAM या Innodb हो सकती है।
जवाबों:
तालिका के mydb.mytable
लिए इसे चलाएं:
SELECT (data_length+index_length) tablesize
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';
SELECT (data_length+index_length)/power(1024,1) tablesize_kb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';
SELECT (data_length+index_length)/power(1024,2) tablesize_mb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';
SELECT (data_length+index_length)/power(1024,3) tablesize_gb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';
यहाँ एक सामान्य क्वेरी है जहाँ अधिकतम इकाई डिस्प्ले टीबी (TeraBytes) है
SELECT
CONCAT(FORMAT(DAT/POWER(1024,pw1),2),' ',SUBSTR(units,pw1*2+1,2)) DATSIZE,
CONCAT(FORMAT(NDX/POWER(1024,pw2),2),' ',SUBSTR(units,pw2*2+1,2)) NDXSIZE,
CONCAT(FORMAT(TBL/POWER(1024,pw3),2),' ',SUBSTR(units,pw3*2+1,2)) TBLSIZE
FROM
(
SELECT DAT,NDX,TBL,IF(px>4,4,px) pw1,IF(py>4,4,py) pw2,IF(pz>4,4,pz) pw3
FROM
(
SELECT data_length DAT,index_length NDX,data_length+index_length TBL,
FLOOR(LOG(IF(data_length=0,1,data_length))/LOG(1024)) px,
FLOOR(LOG(IF(index_length=0,1,index_length))/LOG(1024)) py,
FLOOR(LOG(IF(data_length+index_length=0,1,data_length+index_length))/LOG(1024)) pz
FROM information_schema.tables
WHERE table_schema='mydb'
AND table_name='mytable'
) AA
) A,(SELECT 'B KBMBGBTB' units) B;
कोशिश करो !!!
SELECT (data_length+index_length)/power(1024,2) tablesize_mb, table_name FROM information_schema.tables WHERE table_schema='mydb' order by tablesize_mb;
mydb
नाम और आकार के साथ सभी तालिकाओं की एक सूची प्राप्त करने के लिए , आकार के अनुसार क्रमबद्ध करें।
यह InnoDB तालिकाओं के लिए सटीक नहीं होगा। डिस्क पर आकार वास्तव में क्वेरी के माध्यम से रिपोर्ट किए गए से बड़ा है।
अधिक जानकारी के लिए कृपया पेरकोना के इस लिंक को देखें।
https://www.percona.com/blog/2008/12/16/how-much-space-does-empty-innodb-table-take/
डिफ़ॉल्ट रूप से स्थापित mysql के साथ लिनक्स में:
[you@yourbox]$ ls -lha /var/lib/mysql/<databasename>
NIXCRAFT के mysql db लोकेशन पर आधारित है
RolandMySQLDBA के उत्तर के आधार पर मुझे लगता है कि हम तालिका में प्रत्येक स्कीमा का आकार प्राप्त करने के लिए उपरोक्त का उपयोग कर सकते हैं:
SELECT table_schema, SUM((data_length+index_length)/power(1024,1)) tablesize_kb
FROM information_schema.tables GROUP BY table_schema;
वास्तव में यह पसंद आया!
आप शायद फाइलों के आकार को देख सकते हैं ...
प्रत्येक तालिका को फ़ोल्डर के अंदर अलग-अलग फ़ाइलों के एक जोड़े में संग्रहीत किया जाता है, जिसे आपके डेटाबेस कहा जाता है। इन फ़ोल्डरों को mysql डेटा डायरेक्टरी में संग्रहीत किया जाता है।
वहां से आप डिस्क पर तालिका का आकार प्राप्त करने के लिए 'du -sh। *' कर सकते हैं।
से लिया मैं इसकी जांच कैसे कितना डिस्क स्थान मेरी डेटाबेस का उपयोग कर रहा है?
आप
phpMyAdmin
अपने नियंत्रण कक्ष में बाएं फ्रेम में डेटाबेस के नाम पर क्लिक करके और दाएं फ्रेम में वहां की तालिकाओं के लिए आकार को पढ़कर MySQL टेबल आकार की जांच कर सकते हैं ।
नीचे दी गई क्वेरी समान जानकारी प्राप्त करने में मदद करेगी bytes
select SUM(data_length) + SUM(index_length) as total_size
from information_schema.tables
where table_schema = 'db_name'
and table_name='table_name';
मैं सिर्फ ' mysqldiskusage ' टूल का उपयोग करूंगा
$ mysqldiskusage --server=user:password@localhost mydbname
# Source on localhost: ... connected.
# Database totals:
+------------+----------------+
| db_name | total |
+------------+----------------+
| mydbaname | 5,403,033,600 |
+------------+----------------+
Total database disk usage = 5,403,033,600 bytes or 5.03 GB