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 のデータサイズを調べたい、現場からお送りしました。