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;
でも不要領域の開放はできるようですが、こちらも参照はできても書き込みロックが掛かります…。