2013年5月31日金曜日

MySQLでテーブル情報につきサイズ

Original post: http://anothermysqldba.blogspot.com/2013/05/size-per-table-information-with-mysql.html



あなたのデータのサイズを知ることはもちろん便利です。 ツールは、MySQLの年と異なるバージョンに比べより簡単になりましたが、それはあなたがあなたのMySQLのバージョンに関わらず、確認されるべきものです。

あなたは、MySQLの古いバージョンを(INFORMATION_SCHEMA前に)実行されているなら、あなたはまだ使用してこのデータを収集し、 "テーブルの表示状態をとINDEX_LENGTHにdata_lengthのを追加します。"することができます INFORMATION_SCHEMAは、これははるかに容易になりますが、あなたが好きなときにそれらを自由に使用できます。

あなたが後にあるだけの情報を収集するためにpagerコマンドを活用してください。
[world]> pager egrep -h "Data_length|Index_length"
PAGER set to 'egrep -h "Data_length|Index_length"'
関連情報を収集するには、showテーブルstatusコマンドを使用します。
[world]> show table status like 'City'\G
Data_length: 409600
Index_length: 131072
1 row in set (0.00 sec)
ページャをリセットします。
[world]> pager
Default pager wasn't set, using stdout. 
テーブルサイズ= DATA_LENGTH + INDEX_LENGTH
[world]> select 409600 + 131072 as Table_Size;
+------------+
| Table_Size |
+------------+
540672 |
+------------+ 

同じ情報がINFORMATION_SCHEMA経由で提供されています:

SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE,SUM(DATA_LENGTH+INDEX_LENGTH) AS size,SUM(INDEX_LENGTH) AS index_size
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA IN ('world') AND TABLE_NAME IN ('City') AND ENGINE IS NOT NULL
GROUP BY TABLE_SCHEMA, TABLE_NAME

TABLE_SCHEMA: world
TABLE_NAME: City
ENGINE: InnoDB
size: 540672
index_size: 131072
1 row in set (0.00 sec) 


ポイントは、注意を払い、あなたのデータを知っている。