Azure Advisor で Azure Database for PostgreSQL の新しいパフォーマンス推奨事項が利用できるようになっていたので確認してみた
いわさです。
私は Azure のデータベースの中で Azure Database for PostgreSQL を使うことが多いのですが先日気になるアップデートがありました。
以前から Azure Advisor で Azure Database for PostgreSQL に関する推奨事項の生成はされていたのですが、パフォーマンスに関する新しい推奨事項が何項目か追加され、既存の推奨事項についても詳細情報が追加されるようになったようです。
いくつかパフォーマンスに影響のあるサーバーパラメータを調整しつつ、推奨事項を確認してみました。
ドキュメント上の推奨事項の比較
本日時点で日本語ドキュメントは古い状態だったようなので、英語版と日本語版のドキュメント比較を行ってみました。
アナウンスによるとパフォーマンスによる推奨事項が今回の対象だったようなので次のページを比較しています。
- 英語版(おそらく新しい)
- 日本語版(おそらく古い)
英語版(新)推奨事項 | 日本語版(旧)推奨事項 |
---|---|
Review your server for inactive Logical Replication Slots | PostgreSQL フレキシブル サーバーのパフォーマンスを向上させるために、非アクティブな論理レプリケーション スロットを特定する |
Review your server for too frequent checkpoints | PostgreSQL - フレキシブル サーバーのパフォーマンスを向上させるために、チェックポイントが頻繁に発生しているかどうかを特定する |
Review your server for bloat ratio greater than 80% | PostgreSQL - フレキシブル サーバーのパフォーマンスを向上させるために高い膨張率を特定する |
Review your server for high CPU utilization | PostgreSQL サーバーの仮想コアを増加させる |
Review your server for log_statement set to ALL | Azure Database で PostgreSQL の log_statement 設定を最適化します |
Review your server for log_duration turned ON | Azure Database で PostgreSQL の log_duration 設定を最適化します |
Review your server approaching wraparound | PostgreSQL - フレキシブル サーバーのパフォーマンスを向上させるためにトランザクションのラップアラウンドを特定する |
Review your server for log_statement_stats turned ON | 対応する項目なし |
Review your server for log_min_duration_statement turned ON | Azure Database で PostgreSQL の log_min_duration 設定を最適化します |
Review your server for long running transactions | PostgreSQL - フレキシブル サーバーのパフォーマンスを向上させるために実行時間の長いトランザクションを特定する |
Review your server for autovacuum turned OFF | 対応する項目なし |
Review your server for log_error_verbosity set to VERBOSE | Azure Database で PostgreSQL の log_error_verbosity 設定を最適化します |
Review your server for orphaned prepared transactions | PostgreSQL - フレキシブル サーバーのパフォーマンスを向上させるために孤立した準備済みトランザクションを特定する |
Distribute data in server group to distribute workload among nodes | サーバー グループにデータを分散させてノード間でワークロードを分散させる |
Rebalance data in Hyperscale (Citus) server group to distribute workload among worker nodes more evenly | Hyperscale (Citus) サーバー グループでデータのバランスを再調整し、ワーカー ノード間でより均等になるようにワークロードを分散させる |
Increase the storage limit for Hyperscale (Citus) server group | Hyperscale (Citus) サーバー グループの記憶域の上限の引き上げ |
対応する項目なし | work_mem を増やして、並べ替えとハッシュによるディスクの過度な書き込みを回避する |
対応する項目なし | 新しい Ev5 コンピューティング ハードウェアを使用してワークロードのパフォーマンスを 30% 向上させる |
対応する項目なし | データベースを SSPG から FSPG に移行する |
アナウンスによると 3 つの新しい推奨事項が利用可能になったと紹介されていたのですが、autovacuum と log_statement_stats の 2 つしか確認出来ませんでした。
一方で日本語版にあった 3 つの項目が英語版ドキュメントからは削除されていました。
試してみた
Azure Database for PostgreSQL を作成します。
今回追加されたパフォーマンス推奨事項の対象であるサーバーパラメータはデフォルトだと推奨設定になっています。
そこでサーバーパラメータ機能から推奨から外れる設定にしてみましょう。autovacuum と log_statement_stats です。
その後 1 時間ほどで次の推奨事項が表示されました。
log_statement_stats が ON になっているので確認しなさいと言われていますね。
log_statement_stats を ON にすると、クエリごとの CPU、メモリ、ディスク I/O などのパフォーマンス統計をサーバーログに出力するようになります。
デフォルトは OFF になっており、ON にする時は解析が必要な場合のみなど一時的な利用にとどめておくことが推奨されています。
log_statement_stats はすぐに推奨事項が生成されましたが、autovacuum に関する推奨事項は生成されませんね。
その後 12 時間ほど放置してみましたがやはり出力されませんでした。
調べてみるとどうやら autovacuum を OFF にするだけでは出力されないようで、さらにディスク使用率が一定以上肥大化している時に生成されるようでした。
さいごに
本日は Azure Advisor で Azure Database for PostgreSQL の新しいパフォーマンス推奨事項が利用できるようになっていたので確認してみました。
このチェック項目一覧、Azure にかかわらず参考にできると思うので非常に良いですね。
また、Azure Advisor を特に設定不要で無料で使い始めれるのでうまく活用したいですね。