PostgreSQLのテーブルやデータベースのデータサイズを調べるには

以前の記事(PostgreSQLの各テーブルのレコード数とデータ容量の概数を調べるには)でテーブルごとのサイズを調べる方法を書きましたが、PostgreSQLのデータベースごとのサイズを調べる方法も併せて書いておきます。

データベースのサイズ

SELECT pg_database_size(datname) AS db_size, pg_size_pretty(pg_database_size(datname)) AS db_size_h, datname FROM pg_database ORDER BY db_size DESC;

3カラムで一覧表示します。

  • バイト単位のサイズ
  • GBなどの単位を付けた見やすいサイズ表示
  • データベース名

テーブルのサイズ

SELECT relpages::BIGINT * 8192 AS table_size, pg_size_pretty(relpages::BIGINT * 8192) AS table_size_h, reltuples::BIGINT, relname FROM pg_class ORDER BY table_size DESC;

4カラムで一覧表示します。

  • バイト単位のサイズ
  • GBなどの単位を付けた見やすいサイズ表示
  • レコード数
  • テーブル名

8192 という数字はPostgreSQLビルド時に決まるパラメータで SHOW block_size; というコマンドで確認できます。