零細システムエンジニアの備忘録

RPA、サーバ、ネットワークに関する設定メモ、導入相談もコメント欄やメールに頂ければお答えしますのでお気軽にご相談下さい(^^)

【Postgresql】負荷調査した時のメモ

基本的に仕事で使用しているSQLMySQLマイクロソフトSQLなのですが

Postgresqlの負荷調査をすることになったのでその備忘録になります。

扱っているバージョンが8.4と古いですが、新しいバージョンでもできると思います。というよりもっといいツールがあるようです(*_*)

■各テーブルのサイズ
SELECT relname, reltuples, (relpages / 128) as mbytes, (relpages * 8192.0 / (reltuples + 1e-10)) as average_row_size FROM pg_class ORDER BY mbytes DESC;

■デットロック確認方法

SELECT l.pid, db.datname, c.relname, l.locktype, l.mode
FROM pg_locks l
LEFT JOIN pg_class c ON l.relation=c.relfilenode
LEFT JOIN pg_database db ON l.database = db.oid
ORDER BY l.pid;

■コミット・ロールバックの回数やデータベース単位のキャッシュヒット率、デットロック発生回数などを確認
SELECT * FROM pg_stat_database WHERE datname = '【データベース名】';

■各テーブルに対する処理の概要を確認 

SELECT * FROM pg_stat_user_tables WHERE relname = '【テーブル名】';

■動作中のバックエンドプロセスの情報確認
SELECT * FROM pg_stat_activity;