SELECT文でデータベースの特定のスキーマの各テーブルのサイズを確認する


SELECT文でデータベースの特定のスキーマの各テーブルのサイズを確認する

データベースの見積もりなどの時に既存のDBがどれくらいのサイズかを確認するために時々使うのでメモ

DB_name_hereのところをデータサイズをSELECTしたいdb名を入れる

SELECT
  table_name
  , engine
  , table_rows AS tbl_rows
  , avg_row_length AS rlen
  , floor((data_length + index_length) / 1024) AS allkb
  , floor((data_length) / 1024) AS dkb
  , floor((index_length) / 1024) AS ikb 
FROM
  information_schema.tables 
WHERE
    table_schema='DB_name_here'
ORDER BY
  (data_length + index_length) DESC;
  • table_name(テーブルの名称)
  • engine(DBエンジンの種類) ・・・ InnoDB、MyISAM、MEMORYなど
  • tbl_rows(レコード件数)
  • rlen(平均レコードサイズ[単位: Byte])
  • allkb(テーブル全体のサイズ[単位: KB])
  • dkb(テーブル内のデータが占めるサイズ[単位: KB])
  • ikb(テーブル内のインデックスが占めるサイズ[単位: KB])

参考: