Belirli bir MySQL tablosunun ne kadar disk alanı kapladığını belirlemenin hızlı bir yolu var mı? Tablo MyISAM veya Innodb olabilir.
Belirli bir MySQL tablosunun ne kadar disk alanı kapladığını belirlemenin hızlı bir yolu var mı? Tablo MyISAM veya Innodb olabilir.
Yanıtlar:
Bir tablo için şunu mydb.mytable
çalıştırın:
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';
Maksimum birim görüntüsünün TB (TeraBytes) olduğu genel bir sorgu.
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;
Bir şans ver !!!
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
ad ve boyuta sahip tüm tabloların boyuta göre sıralanmış bir listesini almak için .
InnoDB tabloları için bu doğru olmayacaktır. Diskteki boyut aslında sorgu yoluyla bildirilenden daha büyük.
Daha fazla bilgi için lütfen Percona'dan gelen bu bağlantıya bakın.
https://www.percona.com/blog/2008/12/16/how-much-space-does-empty-innodb-table-take/
Linux'ta varsayılan olarak mysql kurulu:
[you@yourbox]$ ls -lha /var/lib/mysql/<databasename>
dayalı NIXCRAFT en MySQL db konumu
RolandMySQLDBA'nın cevabına dayanarak, bir tablodaki her şemanın boyutunu elde etmek için yukarıdakileri kullanabiliriz:
SELECT table_schema, SUM((data_length+index_length)/power(1024,1)) tablesize_kb
FROM information_schema.tables GROUP BY table_schema;
Gerçekten beğendim!
Dosyaların boyutuna bakabilirsiniz ...
Her tablo, veritabanınızı adlandırdığınız adı taşıyan bir klasörde birkaç ayrı dosyada saklanır. Bu klasörler mysql veri dizininde saklanır.
Oradan diskteki tablonun boyutunu almak için bir 'du -sh. *' Yapabilirsiniz.
Alıntı: Veritabanımın ne kadar disk alanı kullandığını nasıl kontrol ederim?
MySQL tablo boyutunu
phpMyAdmin
, sol çerçevedeki veritabanı adına tıklayarak ve sağ çerçevede oradaki tabloların boyutunu okuyarak kontrol panelinizden kontrol edebilirsiniz.
Aşağıdaki sorgu da aynı bilgileri almanıza yardımcı olacaktır. 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';
Sadece ' mysqldiskusage ' aracını aşağıdaki gibi kullanırdım
$ 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