MySQL で DB, Table のデータ、インデックスサイズを確認するクエリをご紹介します。
Amazon Aurora MySQL のデータベースストレージの料金を試算するために、MySQL の DB, Table の各種データサイズを確認する方法を調べました。
ストレージ料金 0.12USD/毎月のGBあたり
MySQL で各DBの容量を確認するクエリは以下のとおりです。
SET @unit= の部分を確認したい単位の行にコメントアウトを切り替えてご利用下さい。
SET @unit=1024; #kb
# SET @unit=1024*1024; #mb
# SET @unit=1024*1024*1024; #gb
SELECT
table_schema, sum(data_length)/@unit AS db_size
FROM
information_schema.tables
GROUP BY
table_schema
ORDER BY
sum(data_length+index_length) DESC;
+-----------------------+-----------+
| table_schema | db_size |
+-----------------------+-----------+
| mysql | 7665.2344 |
| yourapp_development | 416.0000 |
| yourapp_test | 400.0000 |
| information_schema | 160.0000 |
| sys | 16.0000 |
| performance_schema | 0.0000 |
+-----------------------+-----------+
6 rows in set (0.43 sec)
MySQL で各テーブルの容量を確認するクエリは以下のとおりです。
SET @unit= の部分を確認したい単位の行にコメントアウトを切り替えてご利用下さい。
SET @unit=1024; #kb
# SET @unit=1024*1024; #mb
# SET @unit=1024*1024*1024; #gb
SELECT
table_name, engine, table_rows AS tbl_rows,
avg_row_length AS rlen,
floor((data_length+index_length)/@unit) AS all_size,
floor((data_length)/@unit) AS data_size,
floor((index_length)/@unit) AS index_size
FROM
information_schema.tables
WHERE
table_schema=database()
ORDER BY
(data_length+index_length) DESC;
+---------------------------+--------+----------+-------+----------+-----------+------------+
| table_name | engine | tbl_rows | rlen | all_size | data_size | index_size |
+---------------------------+--------+----------+-------+----------+-----------+------------+
| user | InnoDB | 1 | 16384 | 32 | 16 | 16 |
+---------------------------+--------+----------+-------+----------+-----------+------------+
以上、MySQL の DB, Table のデータサイズを調べたい、現場からお送りしました。