MySQLにおいて表題を知りたい。現在どれくらいのサイズになっているのかな?と疑問に思ったので。
■ 環境
- MySQL 5.6.34
■ information_schema
MySQLに”root“で接続し、”information_schema“データベースを確認する。”TABLES“テーブルに情報がありそうである。
mysql> desc tables;
+-----------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG | varchar(512) | NO | | | |
| TABLE_SCHEMA | varchar(64) | NO | | | |
| TABLE_NAME | varchar(64) | NO | | | |
| TABLE_TYPE | varchar(64) | NO | | | |
| ENGINE | varchar(64) | YES | | NULL | |
| VERSION | bigint(21) unsigned | YES | | NULL | |
| ROW_FORMAT | varchar(10) | YES | | NULL | |
| TABLE_ROWS | bigint(21) unsigned | YES | | NULL | |
| AVG_ROW_LENGTH | bigint(21) unsigned | YES | | NULL | |
| DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |
| MAX_DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |
| INDEX_LENGTH | bigint(21) unsigned | YES | | NULL | |
| DATA_FREE | bigint(21) unsigned | YES | | NULL | |
| AUTO_INCREMENT | bigint(21) unsigned | YES | | NULL | |
| CREATE_TIME | datetime | YES | | NULL | |
| UPDATE_TIME | datetime | YES | | NULL | |
| CHECK_TIME | datetime | YES | | NULL | |
| TABLE_COLLATION | varchar(32) | YES | | NULL | |
| CHECKSUM | bigint(21) unsigned | YES | | NULL | |
| CREATE_OPTIONS | varchar(255) | YES | | NULL | |
| TABLE_COMMENT | varchar(2048) | NO | | | |
+-----------------+---------------------+------+-----+---------+-------+
21 rows in set (0.01 sec)
mysql>
“DATA_LENGTH“カラムで判明できそうである。SQLでテーブルごとに取得する。これでデータベースごとにサイズを概算する。
mysql> select table_schema, sum(data_length) from tables group by table_schema;
+-----------------------+------------------+
| table_schema | sum(data_length) |
+-----------------------+------------------+
| example | 66027520 |
| information_schema | 0 |
:
mysql>
“INDEX_LENGTH“も合わせて計算した方が良いのだろうか?試してみる。
mysql> select table_schema, sum(data_length + index_length) from tables group by table_schema;
+-----------------------+---------------------------------+
| table_schema | sum(data_length + index_length) |
+-----------------------+---------------------------------+
| example | 83951616 |
:
byteでの表記なので1024で順次割っていく。
mysql> select table_schema, sum(data_length + index_length) / 1024 as KB from tables group by table_schema;
+-----------------------+--------------+
| table_schema | KB |
+-----------------------+--------------+
| example | 81984.0000 |
:
mysql> select table_schema, sum(data_length + index_length) / 1024 / 1024 as MB from tables group by table_schema;
+-----------------------+---------------+
| table_schema | MB |
+-----------------------+---------------+
| example | 80.06250000 |
:
欲しい情報としてはこんな感じで十分だ。
以上。