Bagaimana cara mendapatkan ukuran database mysql?


542

Bagaimana cara mendapatkan ukuran database mysql?
Misalkan database target disebut "v3".


Untuk tabel spesifik / ukuran database spesifik, skrip yang disediakan di sini akan membantu, informasi dihitung dari tabel information_schema.tables, lihat jawaban terperinci di sini rathishkumar.in/2017/12/…
Rathish

Jawaban:


1185

Jalankan permintaan ini dan Anda mungkin akan mendapatkan apa yang Anda cari:

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; 

Permintaan ini berasal dari forum mysql , di mana ada instruksi yang lebih komprehensif yang tersedia.


4
Bahkan setelah saya menghapus sebagian besar data dari tabel dalam database, ukurannya tetap sama
Vidz

2
@Vidz apakah Anda menggunakan mesin InnoDB. Jika ya, Anda dapat mengosongkan ruang kecuali Anda menggunakan file_per_table dan mengubah tabel.
mandza

5
Harap diingat bahwa metode ini tidak akan mengembalikan basis data yang benar-benar kosong, setidaknya satu tabel harus ada agar database muncul di hasil.
v010dya

13
Untuk memilih dari satu basis data, tambahkan ini di antara baris FROMdan GROUP: where table_schema='DATABASE_NAME'- ganti DATABASE_NAMEdengan basis data Anda.
Harga KJ

2
Catatan: MySQL Workbench akan memuntahkan Syntax error: {column title} (double quoted text) is not valid input here.kesalahan. Judul kolom harus dibungkus dengan tanda centang. Yaitu Database Name.
KareemElashmawy

75

Itu dapat ditentukan dengan menggunakan perintah MySQL berikut

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema

Hasil

Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382

Dapatkan hasil dalam GB

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 / 1024 AS "Size (GB)" FROM information_schema.TABLES GROUP BY table_schema

2
Bagus. Saya suka jawaban ini.
progfan

31

Atau, jika Anda menggunakan phpMyAdmin, Anda bisa melihat jumlah ukuran tabel di footer dari structuretab database Anda . Ukuran database aktual mungkin sedikit di atas ukuran ini, namun tampaknya konsisten dengan table_schemametode yang disebutkan di atas.

Tangkapan layar:

masukkan deskripsi gambar di sini


26

Atau Anda dapat langsung masuk ke direktori data dan memeriksa ukuran gabungan v3.myd, v3. myi dan v3. file frm (untuk myisam) atau v3.idb & v3.frm (untuk innodb).


7
Catatan: file ibd hanya ada jika menggunakan innodb_file_per_table
Slashterix

2
Jawaban ini sangat spesifik untuk mesin penyimpanan. Jawaban oleh @ brian-willis lebih tepat.
Manu Manjunath

15

Untuk mendapatkan hasil dalam MB:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2)) AS "SIZE IN MB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

Untuk mendapatkan hasil dalam GB:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024), 2)) AS "SIZE IN GB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

12
mysqldiskusage  --server=root:MyPassword@localhost  pics

+----------+----------------+
| db_name  |         total  |
+----------+----------------+
| pics     | 1,179,131,029  |
+----------+----------------+

Jika tidak diinstal, ini dapat diinstal dengan menginstal mysql-utilspaket yang harus dikemas oleh sebagian besar distribusi utama.


4

Login pertama ke MySQL menggunakan

mysql -u username -p

Perintah untuk Menampilkan ukuran Database tunggal beserta tabelnya dalam MB.

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;

Ubah database_name menjadi Database Anda

Perintah untuk Menampilkan semua Database dengan ukurannya dalam MB.

SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;

1

Pergilah ke direktori data mysql dan jalankan du -h --max-depth=1 | grep databasename

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.