Apakah ada cara cepat untuk menentukan berapa banyak ruang disk yang digunakan tabel MySQL tertentu? Tabelnya mungkin MyISAM atau Innodb.
Apakah ada cara cepat untuk menentukan berapa banyak ruang disk yang digunakan tabel MySQL tertentu? Tabelnya mungkin MyISAM atau Innodb.
Jawaban:
Untuk tabel, mydb.mytable
jalankan ini untuk:
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';
Berikut ini adalah permintaan umum di mana tampilan unit maksimum adalah TB (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;
Cobalah !!!
SELECT (data_length+index_length)/power(1024,2) tablesize_mb, table_name FROM information_schema.tables WHERE table_schema='mydb' order by tablesize_mb;
untuk mendapatkan daftar semua tabel mydb
dengan nama dan ukuran, dipesan berdasarkan ukuran.
Ini tidak akan akurat untuk tabel InnoDB. Ukuran pada disk sebenarnya lebih besar dari yang dilaporkan melalui kueri.
Silakan lihat tautan ini dari Percona untuk informasi lebih lanjut.
https://www.percona.com/blog/2008/12/16/how-much-space-does-empty-innodb-table-take/
Di linux dengan mysql diinstal secara default:
[you@yourbox]$ ls -lha /var/lib/mysql/<databasename>
berdasarkan lokasi mysql db NIXCRAFT
Berdasarkan jawaban RolandMySQLDBA saya pikir kita bisa menggunakan di atas untuk mendapatkan ukuran setiap skema dalam sebuah tabel:
SELECT table_schema, SUM((data_length+index_length)/power(1024,1)) tablesize_kb
FROM information_schema.tables GROUP BY table_schema;
Sangat menyukainya!
Anda mungkin dapat melihat ukuran file ...
Setiap tabel disimpan dalam beberapa file terpisah di dalam folder yang dinamai apa pun yang Anda sebut basis data Anda. Folder-folder ini disimpan dalam direktori data mysql.
Dari sana Anda dapat melakukan 'du -sh. *' Untuk mendapatkan ukuran tabel pada disk.
Diambil dari Bagaimana cara memeriksa berapa banyak ruang disk yang digunakan database saya?
Anda dapat memeriksa ukuran tabel MySQL dengan melihat di
phpMyAdmin
panel kontrol Anda dengan mengklik nama database di bingkai kiri dan membaca ukuran tabel di sana di bingkai kanan.
Kueri di bawah ini juga akan membantu untuk mendapatkan informasi yang sama 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';
Saya hanya akan menggunakan alat ' mysqldiskusage ' sebagai berikut
$ 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