スナップショット関数

この章ではパフォーマンス統計情報のスナップショットを管理・利用するためのSQL関数について解説します。

スナップショット関数一覧

関数名 内容
pgperf.create_snapshot(level) 新規のスナップショットを作成します。
pgperf.delete_snapshot(snapid) 指定したスナップショットを削除します。
pgperf.purge_snapshots(interval) 指定した期間以前のスナップショットを削除します。
pgperf.get_interval(snapid1, snapid2) 指定した2つのスナップショットの間隔を秒数で取得します。

pgperf.create_snapshot()関数

概要

PostgreSQL内のパフォーマンス統計情報のスナップショットを取得します。

定義

integer pgperf.create_snapshot(integer level)

引数

引数名 引数型 内容
level integer 取得するスナップショットレベル

データベース内のパフォーマンス統計情報は、その種別によってはデータベースへの小さくない負荷が発生する場合があります。

pgperf.create_snapshot() 関数では、スナップショット取得レベルを指定することで、負荷の小さいパフォーマンス統計情報は頻繁に取得し、データベースへの負荷のかかるパフォーマンス統計情報は頻度を下げて取得することが可能です。

取得レベル 取得する内容
1

基本的なアクセス統計情報およびセッション情報のスナップショットを取得します。

pg_stat_database, pg_database_size()

pg_stat_user_tables, pg_statio_user_tables

pg_stat_user_indexes, pg_statio_user_indexes

pg_relation_size(), pg_total_relation_size()

pg_current_xlog_location(), pg_current_xlog_insert_location()

pg_stat_bgwriter

pg_stat_activity, pg_locks, pg_stat_statements

2

上記に加え、オプティマイザ統計情報のスナップショットを取得します。

pg_statistic

3 未使用
4

上記に加え、テーブル/インデックスのフラグメンテーション情報のスナップショットを取得します。

pgstattuple(), pgstatindex()

5 未使用

pgperf.delete_snapshot()関数

概要

指定したパフォーマンス統計情報のスナップショットのデータを削除します。

定義

integer pgperf.delete_snapshot(integer snapid);

引数

引数名 引数型 内容
snapid integer 削除するスナップショットのスナップショットID

pgperf.purge_snapshots()関数

概要

パフォーマンス統計情報の古いスナップショットを一括して削除します。

定義

integer pgperf.purge_snapshots(interval period);

引数

引数名 引数型 内容
period interval 削除するスナップショットの期間

period で指定された期間(インターバル)より前に作成されたスナップショットを削除します。

interval 型の記述方法の詳細については、PostgreSQLのマニュアルを参照してください。

pgperf.get_interval()関数

概要

指定した2つのスナップショットの間隔を秒数で取得します。

パフォーマンス分析を行うスクリプト等を作成する際、この値を使用することによって容易に単位秒あたりの数値に変換することができます。

定義

integer pgperf.get_interval(integer snapid1, integer snapid2)

引数

引数名 引数型 内容
snapid1 integer スナップショットID
snapid2 integer スナップショットID