PgPerfパッケージの使い方¶
この章ではPgPerfパッケージの導入から基本的な使い方を解説します。
PgPerfパッケージのインストール¶
PgPerfをインストールするには、スナップショットを取得するデータベースに対して pgperf_snapshot_install.sql
スクリプトを実行して、該当データベース内に pgperf
スキーマ、スナップショット関数、およびスナップショットテーブルを作成します。
psql -f pgperf_snapshot_install<VERSION>.sql <DBNAME>
PgPerfパッケージのアンインストール¶
PgPerfパッケージをアンインストールする場合には、インストールしてあったデータベースに対して pgperf_snapshot_uninstall.sql
スクリプトを実行します。
psql -f pgperf_snapshot_uninstall.sql <DBNAME>
pgperf_snapshot_uninstall.sql
を実行すると、該当データベース内の pgperf
スキーマ、およびスキーマに含まれるスナップショット関数、スナップショットテーブルを一括して削除します。
スナップショットの取得¶
スナップショットを取得するには、SQL関数 pgperf.create_snapshot()
を実行します。
スナップショット取得レベルを指定して pgperf.create_snapshot()
関数を実行すると、各統計情報のスナップショットが取得され、取得されたスナップショットのスナップショットIDが返却されます。
以下の例では、スナップショット取得レベルを 4
としてスナップショットを取得し、そのスナップショットIDとして 1005
が返却されています。
postgres=# SELECT pgperf.create_snapshot(4);
create_snapshot
-----------------
1005
(1 row)
postgres=#
スナップショット一覧の取得¶
スナップショットの一覧を取得するには、 pgperf.snapshot
テーブルの内容を表示します。
以下のように、スナップショットIDとスナップショットを取得した日時を取得することができます。
postgres=# SELECT * FROM pgperf.snapshot;
sid | ts | level
-----+----------------------------+-------
0 | 2015-04-11 19:11:24.04428 | 1
1 | 2015-04-11 19:11:24.060965 | 2
2 | 2015-04-11 19:11:24.110034 | 4
(3 rows)
postgres=#
スナップショットの削除¶
スナップショットを削除するには、スナップショットIDを指定してSQL関数 pgperf.delete_snapshot()
を実行します。
以下の例では、スナップショットIDが 2
のスナップショットを削除しています。
postgres=# SELECT pgperf.delete_snapshot(2);
delete_snapshot
-----------------
t
(1 row)
postgres=# SELECT * FROM pgperf.snapshot;
sid | ts | level
-----+----------------------------+-------
0 | 2015-04-11 19:11:24.04428 | 1
1 | 2015-04-11 19:11:24.060965 | 2
(2 rows)
postgres=#
定期的なスナップショットの取得¶
スナップショットを定期的に取得するには、cronなどを用いて定期的に pgperf.create_snapshot()
を実行します。
パッケージに同梱されているシェルスクリプト get_snapshot.sh
は指定したデータベース、または(テンプレート以外の接続が許可されている)すべてのデータベースに対して pgperf.create_snapshot()
を実行します。
以下は postgres
データベースのパフォーマンス統計情報のスナップショットを取得しています。
$ ./get_snapshot.sh postgres
以下はすべてのデータベースのパフォーマンス統計情報のスナップショットを取得しています。
$ ./get_snapshot.sh
crontabを設定することで、 get_snapshot.sh
スクリプトを定期的に実行してスナップショットを取得することができます。
以下のcrontabの設定では10分おきに get_snapshot.sh
スクリプトを実行して全データベースのパフォーマンス統計情報のスナップショットを取得しています。
0-59/10 * * * * /path/to/get_snapshot.sh > /dev/null 2>&1
古いスナップショットの消し込み¶
保存されている古いスナップショットを一括して削除するためには、SQL関数 pgperf.purge_snapshots()
を実行します。
以下の例では、一週間以上前に作成されたスナップショットを削除しています。
postgres=# SELECT sid,ts FROM pgperf.snapshot ORDER BY ts LIMIT 1;
sid | ts
-----+----------------------------
2 | 2012-10-21 18:20:01.238885
(1 row)
postgres=# SELECT now(),pgperf.purge_snapshots('1 weeks');
now | purge_snapshots
-------------------------------+-----------------
2012-10-29 14:57:04.092243+09 | 121
(1 row)
postgres=# SELECT sid,ts FROM pgperf.snapshot ORDER BY ts LIMIT 1;
sid | ts
-----+--------------------------
123 | 2012-10-22 15:00:01.8397
(1 row)
postgres=#