Japan
サイト内の現在位置
PostgreSQL
周辺OSSツール紹介
pg_statsinfo 機能概要
pg_statsinfoは、PostgreSQLサーバの統計情報や稼働状況を定期的に収集・蓄積するツールです。
統計情報や稼働状況を収集・蓄積することで、データベースサーバの動作状況を確認し、性能劣化などの兆候や問題発生時の原因を把握することが可能になります。
pg_statsinfoには以下の機能があります。
①統計情報の取得機能
一定の時間間隔でスナップショットを取得し、リポジトリDBに保存します。
②サーバログ分配機能
PostgreSQL が出力するサーバログをCSVログ、テキストログ、syslog に分配して出力します。
③サーバログ蓄積機能
PostgreSQL が出力するサーバログを収集し、リポジトリDBに蓄積します。
④アラート機能
スナップショット取得時に監視対象インスタンスの状態をチェックし、問題を検知した場合にアラートメッセージをテキストログに出力します。
⑤コマンドライン機能
レポート生成、運用管理の操作等を行うためのコマンドを提供します。
⑥自動メンテナンス機能
1日1回、任意の時刻に下記のメンテナンス操作を行うことができます。
・保持期間を経過した古いスナップショット削除
・保持期間を経過した蓄積ログ削除
・サーバログのログファイル整理

簡易レポートの利用例
以下のコマンドを実行すると、pg_statsinfoの簡易レポートが生成されます。

コマンドライン機能の使い方
生成したレポートの一部を抜粋し、リソースの利用状況の確認やボトルネックの特定などに活用できる代表的な項目を解説します。
■Database Statistics

「Cache Hit Ratio」は、データベース全体のキャッシュヒット率を示します。(①)
「Cache Hit Ratio」が90%を下回っている場合、データベースのアクセス特性に対し十分なキャッシュメモリが確保できておらず、キャッシュミスが多くなっている可能性があります。
「Deadlocks」は、トランザクションでデッドロックが発生した回数を示します。(②)
想定以上のデッドロックが発生している場合は、トランザクション設計やdeadlock_timeoutパラメータを見直す必要があります。

ロールバック数が多い場合は、アプリケーションで想定外のエラーが発生していないか確認する必要があります。
「/** Database Size **/」ではデータベースサイズを確認します。(④)
データベースのサイズに対しディスクの残容量が十分か、データベースサイズが異常な速さで増加していないか等を確認します。
ディスク容量不足は、PostgreSQLの深刻な障害を引き起こす場合があります。
■Long Transactions

Duration列で実行時間が長すぎるクエリがないかを確認します。
Durationが大きいクエリが頻発している場合、アクセス先の表領域の状態や適切な実行計画が用いられているか確認する必要があります。
■Query Activity

「/** Statements **/」では実行されたクエリごとに、総実行時間(Total Time)、1回あたりの実行時間(Time/Call)が表示されます。
想定以上に実行時間がかかっているクエリについては、アクセス先の表領域の状態や適切な実行計画が用いられているか確認する必要があります。
簡易レポート機能が出力するレポートの項目では他にもCPU使用率やWALの出力量などが確認できます。
レポート項目の詳細につきましてはGitHubにて公開されておりますのでご参考にしてください。
https://github.com/ossc-db/pg_statsinfo/tree/main/doc/files
お問い合わせ