pg_statsinfo 1.2
プロジェクトのTopページへ 前のページへ
レポートの見方
pg_make_report.plで出力されるレポートの、サマリ部分についての見方を記述します。なお、基本的に出力される情報は
指定された2つ(もしくは範囲中の最新と最古)のスナップショットの差分値ですが、一部は最新値や平均値を使用しています。
各項目でそれぞれどの値になるのかは、項目の先頭に付与されている下記の凡例を参考にして下さい。
- [d]:差分値
- [n]:最新値
- [a]:平均値
- [m]:最大値
サマリは以下のカテゴリの情報が確認できます。
レポート情報
レポート情報は以下の構成になっています。レポート対象となっているスナップショットのステータスが
確認できます。
---------------------------------------------------------------------
Report Information
---------------------------------------------------------------------
Begin SnapShotID : 開始スナップショットのID
End SnapShotID : 終了スナップショットのID
Begin Snap Time : 開始スナップショットの日時
End Snap Time : 終了スナップショットの日時
Snap Level : # 現状の版では意味の無いものです
Description : スナップショット取得時に付与された説明文
ホスト情報
レポート情報は以下の構成になっています。情報は全て最新のスナップショット情報によるものです。
対象のDBのあるホストのHWやOSに関するステータスが確認できます。
---------------------------------------------------------------------
Host(Instance) System Information
---------------------------------------------------------------------
Host Name : ホスト名
Database Name : DB 名
Port : DBクラスタが稼動しているポート番号
User Name : スナップショット取得の際、DBに接続したユーザ名
Kernel Version : OSのカーネルバージョン
Processors : CPU数
Total Mem Size : 物理メモリサイズ
Swap Mem Size : スワップメモリサイズ
PostgreSQL version : PostgreSQLのバージョン
デバイス使用率
デバイス使用率は以下の構成になっています。情報は全て最新のスナップショット情報によるものです。
DBクラスタやWALが置かれているデバイスの使用率を確認できます。
---------------------------------------------------------------------
Instance Disk Usage Information
---------------------------------------------------------------------
Space_name : テーブルスペース、またはディレクトリ名
Device_ID : テーブルスペース、またはディレクトリの配置されているデバイスID
Device_name : デバイスIDに対応するデバイス名
Location : テーブルスペース、またはディレクトリの位置
USED : デバイスの使用量
AVAIL : デバイスの空き容量
TOTAL : デバイスの総容量
RATIO : デバイスの使用率
[ポイント]
pg_xlog や archive_dirのあるデバイスの使用率に注意しましょう。
ロングトランザクション情報
ロングトランザクション情報は以下の構成になっています。スナップショット取得期間で、
1分以上継続していたトランザクション処理を確認できます。
---------------------------------------------------------------------
Instance Long Transaction Information
---------------------------------------------------------------------
DB : ロングトランザクションが発生しているDB
PID : ロングトランザクションとなっているプロセスID
User name : ロングトランザクション実施中のユーザ名
waiting : ロック待ちかどうか('t'であればロック待ち処理)
Elapsed time : トランザクション実施からの経過時間
Check time : この処理をチェックした日時
Query : ロングトランザクション処理の内容
[ポイント]
ロングトランザクションは、VCAUUMやHOT処理を阻害します。長時間続いている処理があれば、
それを回避するようにしましょう。
DBロードプロファイル
DBロードプロファイルは以下の構成になっています。DBレベルで、どのような処理が中心に
実施されているかを確認できます。
----------------------------------------
Activity Information
----------------------------------------
[n]Database Size : DBサイズ(Byte)
[a]Connection Average Number : 接続数の平均値
[n]Database Frozen Xid(Age) : FREEZE XIDのage
[d]Commit Number : コミットされたトランザクション数
[d]Rollback Number : ロールバックされたトランザクション数
[d]Block Read : ブロックリード回数
[d]Block Hit : キャッシュヒット回数
[d]Cache Hit Ratio : キャッシュヒット率(%)
[d]Return Tuples : 表スキャンで読み取られた行数
[d]Fetched Tuples : インデックススキャンで読み取られた行数
[d]INSERT Tuples : INSERT された行数
[d]UPDATE Tuples : UPDATE された行数
[d]DELETE Tuples : DELETE された行数
[n]Total User Table Number : ユーザテーブル数
[ポイント]
想定外の接続過多や表スキャンが発生していないか注意しましょう。各DML処理の対象になっている行数や
キャッシュヒット率も、問題ないか確認しましょう。
DB設定情報
DB設定情報は以下の構成になっています。情報は全て最新のスナップショット情報によるものです。デフォルトから
変更されているパラメータについて確認ができます。
----------------------------------------
Setting Information
----------------------------------------
Parameter : パラメータ名
Value : 設定値
Source : 変更方法(configuration file : 設定ファイルで変更...など)
[ポイント]
設定したものが反映されていますか?
(ver1.1~)消費時間の多いSQL上位10
時間のかかっているSQL上位10は以下の構成になっています。累積の実行時間の多いSQLが確認できます。
---------------------------------------------------------------------
SQL Ordered Top 10
---------------------------------------------------------------------
User name : SQLを実施したユーザ名
DB name : SQLが実施されたDB名
calls : SQLが実施された回数
total_time : SQLの累積消費時間(秒)
rows : SQLによってスキャンされた累積行数
[QUERY] : SQL文
(ver1.1~)消費時間の多い関数上位10
時間のかかっている関数上位10は以下の構成になっています。累積の実行時間の多い関数が確認できます。
---------------------------------------------------------------------
Function Ordered Top 10
---------------------------------------------------------------------
Schema name : 関数が実施されたスキーマ名
Function name : 関数名
calls : 関数が実施された回数
total_time : 関数全体(関数内で呼ばれた別の関数を含む)の累積消費時間(ミリ秒)
self_time : 関数単位の累積消費時間(ミリ秒)
断片化が進んだテーブル上位10
断片化が進んだテーブル上位10は以下の構成になっています。更新や削除処理によって発生した
不要領域を多く抱えているテーブルを確認できます。
[注意] この情報は対象のテーブルへのANALYZEが十分に実施されていないと、実際の状況と誤差が
生じることがあります。
---------------------------------------
Fragmented Table worst 10
---------------------------------------
[n]Schema : スキーマ名
[n]Table name : テーブル名
[d]dead record : 不要レコード数
[d]live record : 有効レコード数
[d]dead record ratio : 不要レコード率
[ポイント]
レコード数が多く、かつ不要レコード率が高いものがないか確認しましょう。小さなテーブルを除き、理想的には不要レコード率は10以下が望ましいです。
表スキャンの多いテーブル上位10
表スキャンの多いテーブル上位10は以下の構成になっています。表スキャンが大量に実施されているテーブルを確認できます。
---------------------------------------
Much Access Table Top 10
---------------------------------------
[n]Schema : スキーマ名
[n]Table name : テーブル名
[d]seq_scan : 表スキャン回数
[d]records : 表スキャンで読み取られた行数
[d]records per scan : スキャン1回当たりに読み取られた行数
[ポイント]
想定外の表スキャンが行われているテーブルがないか確認しましょう。ANALYZE不足やインデックスの張り忘れで表スキャンが
されてしまっているかもしれません。また、表スキャンが多くても、1回当たりの読み取る行数が少なければ問題はないでしょう。
充填率の低いテーブル上位10
充填率の低いテーブル上位10は以下の構成になっています。情報は全て最新のスナップショット情報によるものです。
テーブル内に不要な領域を多く保持しているテーブルを確認できます。
[注意] この情報は対象のテーブルへのANALYZEが十分に実施されていないと、実際の状況と誤差が
生じることがあります。
---------------------------------------
Low Density Table Worst 10
---------------------------------------
Schema : スキーマ名
Table name : テーブル名
reltuples : レコード数
logical_pages : レコード数が論理的に占めるページ数
physical_pages : レコード数が実際に占めているページ数
density : テーブルの充填率
[ポイント]
充填率の低いテーブルがある場合、VACUUM不足、またはFSM設定値の不備(少なすぎる)ことが考えられます。
充填率が低いテーブルは、キャッシュヒット率の低下による性能低下を招きます。VACUUM計画、FSM設定値の見直しを検討しましょう。
併せて、pg_reorgやCLUSTERコマンドなどで充填率を回復させる
ことも有効な手段です。
断片化の進んだクラスターキー上位10
断片化の進んだクラスターキー上位10は以下の構成になっています。情報は全て最新のスナップショット情報によるものです。
CLUSTER処理時に用いるキーとなるカラムが、どれだけ断片化しているかを確認することができます。
---------------------------------------
Cluster-key Column Correlation Worst 10
---------------------------------------
Schema : スキーマ名
Table name : テーブル名
column_name : カラム名
correlation : 物理的な並び順と論理的な並び順の相関(0に近いほど断片化している)
[ポイント]
CLUSTERに用いるキーは、correlationが1に近いことが理想です。もし、0に近い場合は、このカラムをWHERE句に用いる
範囲検索などが低速化することがあります。その場合はpg_reorgや
CLUSTERコマンドで再編成を実施するよう検討しましょう。
チェックポイント情報
チェックポイント情報は以下の構成になっています。ログから情報をフィルタリングし、集計しています。チェックポイントの
実施状況を確認することができます。
----------------------------------------
checkpoint Information
----------------------------------------
[d]Start By time-threshold : checkpoint_timeout契機で実施されたチェックポイント回数
[d]Start By xlog-threshold : checkpoint_segments契機で実施されたチェックポイント回数
[a]Written Buffers(Average) : チェックポイントで書き込まれたダーディバッファ数(平均値)
[d]Generated WAL Average Numbers : 生成されたWAL数
[d]Deleted WAL Average Numbers : 削除されたWAL数
[d]Recycled WAL Average Numbers : 再利用されたWAL数
[a]Write Average eplased Time(sec) : writeに要した平均時間
[m]Write Max eplased Time(sec) : writeに要した最大時間
[a]Sync Average Elapsed Time (sec) : syncに要した平均時間
[m]Sync Max Elapsed Time (sec) : syncに要した最大時間
[m]Total Max Eplased Time(sec) : 最も時間を要した回チェックポイントの時間
[ポイント]
"Start By xlog-threshold"が多い場合、パラメータの"checkpoint_segments"が低すぎるかもしれません。現状よりも
設定値を上げてみてください。
autovacuum情報
autovacuum情報は以下の構成になっています。ログから情報をフィルタリングし、集計しています。この情報はautovacuumが
実施されたテーブル毎に出力されます。autovacuumの実施状況を確認することができます。
[注意] 出力されるautovacuum情報は、log_autovacuum_min_duration の設定値以上の時間を要したautovacuumとなります。
----------------------------------------
autovacuum Information
----------------------------------------
------------------
テーブル名 (Table)
------------------
[d]autovacuum Times : autovacuum実施回数
[a]Removable Average Pages : 削除されたページ数
[a]Remain Average Pages : 削除されなかったページ数
[a]Removable Average Records : 回収されたレコード数
[a]Remain Average Records : 回収されなかったレコード数
[a]autovacuum Average Elapsed Time (sec) : autovacuumの平均所要時間(秒)
[m]autovacuum Max Elapsed Time (sec) : 最も時間を要した回のautovacuumの時間(秒)
[ポイント]
回収されたレコード数が更新量と比較して妥当かどうか確認してください。回収されたレコードが思ったより
少ない、かつ回収されなかったレコード(=有効なレコード数)が多すぎる、といった時は、ロングトランザクションによる
VACUUMの阻害が発生している可能性があります。
autovacuum開始時間情報
autovacuum開始時間情報は以下の構成になっています。ログから情報をフィルタリングし、集計しています。この情報は
指定期間中に実施されたautovacuumの情報を全て出力します。
[注意] 出力されるautovacuum情報は、log_autovacuum_min_duration の設定値以上の時間を要したautovacuumのものとなります。
----------------------------------------
autovacuum performe Information
----------------------------------------
table : autovacuumが実施されたテーブル
autovacuum start time : autovacuumの開始時間
duration : autovacuumにかかった時間(秒)
プロジェクトのTopページへ 前のページへ