MySQL で DB, Table のデータサイズを確認するクエリ

Tadashi Shigeoka ·  Tue, July 6, 2021

MySQL で DB, Table のデータ、インデックスサイズを確認するクエリをご紹介します。

MySQL

背景 料金試算のために MySQL のデータサイズを確認したい

Amazon Aurora MySQL のデータベースストレージの料金を試算するために、MySQL の DB, Table の各種データサイズを確認する方法を調べました。

ストレージ料金 0.12USD/毎月のGBあたり

引用元: 料金 - Amazon Aurora | AWS

DBの容量を確認するクエリ

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;

クエリ実行結果 DB容量確認

+-----------------------+-----------+
| 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;  

クエリ実行結果 各テーブルの容量確認

  • all_size: 総容量
  • data_size: データ容量
  • index_size: インデックス容量
+---------------------------+--------+----------+-------+----------+-----------+------------+
| table_name | engine | tbl_rows | rlen  | all_size | data_size | index_size |
+---------------------------+--------+----------+-------+----------+-----------+------------+
| user       | InnoDB |        1 | 16384 |       32 |        16 |         16 |
+---------------------------+--------+----------+-------+----------+-----------+------------+

以上、MySQL の DB, Table のデータサイズを調べたい、現場からお送りしました。

参考情報