Bagaimana cara mendapatkan ukuran database mysql?

542

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

Pemula
sumber
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.

Brian Willis
sumber
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
Nadeem0035
sumber
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

Joel
sumber
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).


sumber
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";
williambarau
sumber
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.

Rick James
sumber
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;
Hiren Parghi
sumber
1

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

Evan Haston
sumber