本文 |
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";'
<<<
|