PostgreSQLで、各テーブルが管理上、また実ファイル上何バイト利用しているかを調べます。
# test_dbの各テーブルのサイズを取得します。 # ※ テーブル名 管理上テーブルサイズ 実ファイルサイズ のタブ区切りの形式で出力します。 # ※ 分割テーブルの場合、12345.1, 12345.2 のように、「.番号」が付くファイルが存在するため、対応できていません。 psql -U postgres -d test_db -tAF, -c " select c.relname, c.reltuples as rows, (c.relpages::int8 * 8192) as size_kb, c.relfilenode, db.oid as db_oid from pg_class c, (select oid from pg_database where datname = current_database()) db where relnamespace not in ( select oid from pg_namespace where nspname in ('pg_catalog', 'pg_toast', 'pg_temp_1', 'information_schema') ) and relkind = 'r' order by relname ; " | perl -ne 'chomp; split/,/; print $_[0]."\t".$_[2]."\t".(-s $ENV{"PGDATA"}."/base/".$_[4]."/".$_[3])."\n";' <<<