アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

テーブルごとのサイズを調べる方法

MySQL
サイズというか容量というか使用量というか。アレ。

参考:MySQLのデータベースやテーブルのサイズを確認する方法 - Little Braver
http://little-braver.com/379/

SELECT
  `TABLE_SCHEMA`   -- DB名
 ,`TABLE_NAME`     -- テーブル名
 ,`TABLE_ROWS`     -- レコード数
 ,`AVG_ROW_LENGTH` -- レコードあたりの平均サイズ?
 ,FLOOR((`DATA_LENGTH` + `INDEX_LENGTH`) / 1024) AS `all_kb` -- 合計サイズ
 ,FLOOR(`DATA_LENGTH` / 1024) AS `data_kb`                   -- データサイズ
 ,FLOOR(`INDEX_LENGTH` / 1024) AS `index_kb`                 -- インデックスサイズ
FROM
  `information_schema`.`tables `
WHERE
  `TABLE_SCHEMA` IN ('データベース名1','データベース名2', ...)
ORDER BY
  `TABLE_SCHEMA`
 ,`TABLE_NAME`

InnoDBの場合、行数なんかは不正確な値が出る場合もあります。
サイズもだいたいページ単位(16KB)で出てくる模様。
ちょっと困る。

正確な(というか物理的な)サイズを調べる方法もあるようですが、
InnoDBだとテーブル単位で調べるようなことはできそうにないかな…。

参考:MySQLのデータベースの容量を調べる - ハマログ
https://blog.e2info.co.jp/2013/05/24/mysql%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E5%AE%B9%E9%87%8F%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8B/


データベースサイズの調べ方はこちら。
honey8823.hateblo.jp