DBのサイズ・テーブルのサイズ確認
備忘録ですが。
select * from pg_tables;
↑データベース内のそれぞれのテーブルに関する有用な情報へのアクセスを提供します
データベースとテーブルのサイズを取得
select pg_database_size('db_name');
select pg_relation_size('table_name');
select pg_total_relation_size ('table_name');
↑不要領域なども含めたサイズが取得できる
データベース名とOIDの取得
select datid,datname from pg_stat_database;
$DATADIR/base/のデータを直接調べる。OIDごとのディレクトリが作られているので
cd $DATADIR/base
du -sk *
postgres.confのmax_fsm_pagesの設定値を
超過している状態でvacuumかけても、不要領域を開放できないっぽい。
vacuum時にWarningが出ているのですが、特に気にせず運用した為に、ディスクを
グイグイ食い始める。
vacuum fullをかければ、不要領域の削除もできるのですが、ロックが掛かる為
止められないサーバでは難しいですね。
本当は運用で計画停止を入れるべきだとは思うのですが…^^;
REINDEX TABLE table_name;
でも不要領域の開放はできるようですが、こちらも参照はできても書き込みロックが掛かります…。