これなに
RDS インスタンスのランニングコストを節約したいと思って、どのテーブルサイズが大きいのだろうと調べた時のメモです。
わりとみなさんご存知の内容だと思いますし、説明も十分では無いと思うので参考程度にご覧いただければと思います。
調査手順
MySQL に接続
釈迦に説法だと思いますが、一応 MySQL の接続コマンドをメモしておきます。
-h
, --port
オプションは任意なので、ご自身の環境に合わせてカスタムしてください。
> mysql -u ユーザー名 -h ホスト名 -- port ポート番号 -p
テーブルサイズ調査クエリ
information_schema
データベースを使用してテーブルのサイズ情報を取得できます。
クエリは以下の通りです。
SELECT
table_schema AS `Database`,
table_name AS `Table`,
table_rows AS `Rows`,
ROUND((data_length + index_length) / 1024 / 1024, 2) AS `Size (MB)`
FROM
information_schema.TABLES
WHERE
table_schema = 'データベース名称'
ORDER BY
(data_length + index_length) DESC;
取得したクエリ結果は以下のようなものです。
参考程度にご覧ください。
mysql> SELECT
-> table_schema AS `Database`,
-> table_name AS `Table`,
-> table_rows AS `Rows`,
-> ROUND((data_length + index_length) / 1024 / 1024, 2) AS `Size (MB)`
-> FROM
-> information_schema.TABLES
-> WHERE
-> table_schema = 'su3_database'
-> ORDER BY
-> (data_length + index_length) DESC;
+--------------+--------------------+---------+-----------+
| Database | Table | Rows | Size (MB) |
+--------------+--------------------+---------+-----------+
| su3_database | sent_email_history | 41965 | 1167.23 |
| su3_database | user_settings | 52319 | 1110.16 |
| su3_database | user_accounts | 3189785 | 410.77 |
+--------------+--------------------+---------+-----------+
3 rows in set (0.02 sec)
mysql>
さいごに
結構忘れがちなので個人的にメモしておきました。
繰り返しになりますが、わりとみなさんご存知の内容だと思いますし、説明も十分では無いと思うので参考程度にご覧いただければと思います。