Seperti kebanyakan database relasional, MySQL menyediakan metadata yang berguna tentang database itu sendiri. Sementara sebagian besar database lain menyebut informasi ini sebagai catalog, dokumentasi resmi MySQL merujuk pada metadata INFORMATION_SCHEMA sebagai tables
Terlepas dari namanya, yang penting adalah informasi yang diberikan oleh tabel INFORMATION_SCHEMA ini. Semuanya dari views dan +----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ... 0 hingga +----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ... 1 dan tables dapat ditemukan di INFORMATION_SCHEMA. Untuk tujuan kami, kami sangat tertarik dengan metadata tables, yang dapat kami kueri untuk benar-benar mengekstrak ukuran berbagai tabel dalam sistem
Mencantumkan Ukuran Tabel Dari Satu Basis Data
Seperti yang dapat dilihat di dokumentasi resmi, tabel +----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ... 5 berisi sekitar 20 kolom, tetapi untuk tujuan menentukan jumlah ruang disk yang digunakan oleh tabel, kami akan fokus pada dua kolom secara khusus. +----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ... 6 dan +----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ... 7
- +----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ... 6 adalah panjang (atau ukuran) dari semua data dalam tabel (dalam +----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ... 9)
- +----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ... 7 adalah panjang (atau ukuran) file indeks untuk tabel (juga di +----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ... 9)
Berbekal informasi ini, kita dapat menjalankan kueri yang akan mencantumkan semua tabel dalam database tertentu bersama dengan ruang disk (ukuran) masing-masing. Kita bahkan bisa menjadi sedikit lebih menarik dan mengonversi nilai ukuran normal dari +----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ... 9 menjadi sesuatu yang lebih berguna dan dapat dipahami oleh kebanyakan orang seperti SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_schema.TABLES WHERE TABLE_SCHEMA = "bookstore" AND TABLE_NAME = "book" ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC; 3
SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_schema.TABLES WHERE TABLE_SCHEMA = "bookstore" ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC;
Dalam contoh ini menggunakan database SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_schema.TABLES WHERE TABLE_SCHEMA = "bookstore" AND TABLE_NAME = "book" ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC; 4, kami menggabungkan +----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ... 6 dan +----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ... 7 sebagai +----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ... 9, lalu membaginya dengan SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_schema.TABLES WHERE TABLE_SCHEMA = "bookstore" AND TABLE_NAME = "book" ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC; 8 dua kali untuk mengubahnya menjadi SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_schema.TABLES WHERE TABLE_SCHEMA = "bookstore" AND TABLE_NAME = "book" ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC; 9 lalu SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_schema.TABLES WHERE TABLE_SCHEMA = "bookstore" AND TABLE_NAME = "book" ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC; 3. Set hasil kami akan terlihat seperti ini
+----------------------------------+-----------+ | Table | Size (MB) | +----------------------------------+-----------+ | book | 267 | | author | 39 | | post | 27 | | cache | 24 | ...
Jika Anda tidak peduli dengan semua tabel dalam database dan hanya menginginkan ukuran tabel tertentu, Anda cukup menambahkan +-------+-----------+ | Table | Size (MB) | +-------+-----------+ | book | 267 | +-------+-----------+ 1 row in set (0.00 sec) 1 ke klausa +-------+-----------+ | Table | Size (MB) | +-------+-----------+ | book | 267 | +-------+-----------+ 1 row in set (0.00 sec) 2. Di sini kami hanya menginginkan informasi tentang tabel ________20______3
SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_schema.TABLES WHERE TABLE_SCHEMA = "bookstore" AND TABLE_NAME = "book" ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC;
Hasilnya, seperti yang diharapkan, sekarang
+-------+-----------+ | Table | Size (MB) | +-------+-----------+ | book | 267 | +-------+-----------+ 1 row in set (0.00 sec)
Daftar Semua Ukuran Tabel Dari SEMUA Database
Jika Anda mengalami masalah di mana ukuran database Anda bertambah tetapi Anda tidak tahu tabel mana yang menjadi penyebabnya, mungkin berguna untuk menanyakan ukuran semua tabel dalam semua database di seluruh sistem. Ini dapat dicapai dengan mudah dengan kueri berikut
SELECT TABLE_SCHEMA AS `Database`, TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_schema.TABLES ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC;
Ini akan mengembalikan tidak hanya ukuran tabel, tetapi juga nama tabel dan database induk yang terkait dengannya