information_schema.tablesを利用して、テーブルごとのサイズ情報を取得します。
SELECT
TABLE_SCHEMA AS `データベース名`,
TABLE_NAME AS `テーブル名`,
ROUND(DATA_LENGTH / 1024 / 1024, 2) AS `データサイズ(MB)`,
ROUND(INDEX_LENGTH / 1024 / 1024, 2) AS `インデックスサイズ(MB)`,
ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS `合計サイズ(MB)`
FROM
information_schema.tables
WHERE
TABLE_SCHEMA = 'database_name'
ORDER BY
(DATA_LENGTH + INDEX_LENGTH) DESC;
各列の意味:
- TABLE_SCHEMA: データベース名
- TABLE_NAME: テーブル名
- DATA_LENGTH: テーブルのデータ部分のサイズ
- INDEX_LENGTH: テーブルのインデックス部分のサイズ
- DATA_LENGTH + INDEX_LENGTH: 合計サイズ
使い方:
クエリのyour_database_nameを調べたいデータベース名に置き換えて実行してください。
結果は各テーブルのサイズをMB単位で表示します。
output
データベース名 | テーブル名 | データサイズ(MB) | インデックスサイズ(MB) | 合計サイズ(MB) |
---|---|---|---|---|
database_name | table_1 | 25837.00 | 45177.00 | 71014.00 |
database_name | table_2 | 28123.00 | 2448.86 | 30571.86 |
database_name | table_3 | 12457.00 | 9748.97 | 22205.97 |
database_name | table_4 | 5903.00 | 2766.16 | 8669.16 |
database_name | table_5 | 2429.00 | 2332.47 | 4761.47 |
database_name | table_6 | 1688.00 | 2369.00 | 4057.00 |
database_name | table_7 | 994.00 | 1285.20 | 2279.20 |