Azure Database for PostgreSQL フレキシブル サーバーのインテリジェント チューニング

Azure Database for PostgreSQLフレキシブル サーバーには、パフォーマンスを自動的に向上させ、問題を防ぐのに役立つインテリジェントなチューニング機能が含まれています。 インテリジェント チューニングは、Azure Database for PostgreSQLフレキシブル サーバー データベースの状態を継続的に監視し、ワークロードに合わせてデータベースを動的に調整します。

この機能には、次の 2 つの自動チューニング機能が含まれています。

  • 自動バキューム チューニング: この機能は非推奨となり、新しい アダプティブ 自動バキュームに置き換えられました。
  • 書き込みのチューニング: この関数は、書き込み操作のボリュームとパターンを監視します。 書き込みパフォーマンスに影響するパラメーターを変更します。 これらの調整により、システムのパフォーマンスと信頼性の両方が向上し、潜在的な合併症を予防的に回避できます。

インテリジェント チューニングを構成する方法について説明します。

インテリジェント チューニングを使用する理由

データベース内での書き込み操作のチューニングは、Azure Database for PostgreSQLフレキシブル サーバーの正常性とパフォーマンスを維持するうえで重要な部分です。 通常、データベース管理者は、このタスクを実行します。 データベースを絶えず監視し、書き込み操作を微調整するのは困難で時間がかかる場合があります。 複数のデータベースを扱っている場合には、このタスクはさらに複雑になります。

インテリジェントなチューニングにより、このプロセスが簡略化されます。 データベースを手動で監視およびチューニングする代わりに、インテリジェント チューニングを使用して、データベースを自動的に監視および調整します。 その分、他の重要なタスクに集中できます。

書き込みチューニング関数は、書き込み操作の量とトランザクション パターンを監視します。 bgwriter_delaycheckpoint_completion_targetmax_wal_sizemin_wal_size などのパラメーターをインテリジェントに調整します。 そうすることで、書き込み負荷が高い場合でもシステムのパフォーマンスと信頼性が向上します。

インテリジェント チューニングを使用する場合は、Azure Database for PostgreSQLフレキシブル サーバーに依存してデータベースの最適なパフォーマンスを維持することで、貴重な時間とリソースを節約できます。

インテリジェント チューニングの仕組み

インテリジェント チューニングは、ワークロードの特性について学習する継続的な監視および分析プロセスです。 また、現在の負荷とリソースの使用状況 (CPU や IOPS など) も追跡します。 アプリケーション ワークロードの通常の操作には影響しません。

このプロセスにより、データベースは、サーバーの現在の書き込みパフォーマンスとチェックポイントの効率を識別することで、ワークロードに合わせて動的に調整できます。 これらの分析情報を使用することで、インテリジェント チューニングによって、ワークロードのパフォーマンスを向上させ、潜在的な落とし穴を回避するチューニング アクションがデプロイされます。

書き込みのチューニング

インテリジェント チューニングでは、書き込みチューニングに関連する 4 つのパラメーター (bgwriter_delaycheckpoint_completion_targetmax_wal_sizemin_wal_size) を調整します。

bgwriter_delay パラメーターは、バックグラウンド ライター プロセスが "ダーティ" バッファー (新規または変更されたバッファー) をクリーンアップするためにウェイクアップする頻度を決定します。 バックグラウンド ライター プロセスは、書き込み操作を処理するAzure Database for PostgreSQLフレキシブル サーバーの 3 つのプロセスのうちの 1 つです。 その他のプロセスは、チェックポイント 処理とバックエンド書き込み (アプリケーション接続などの標準クライアント プロセス) です。

バックグラウンド ライター プロセスの主要な役割は、中心となるチェックポインター プロセスの負荷を軽減し、かつバックエンド書き込みの負担も軽減することです。 bgwriter_delay パラメーターは、バックグラウンド ライターのラウンドの頻度を制御します。 このパラメーターを調整することで、データ操作言語 (DML) クエリのパフォーマンス最適化も可能です。

checkpoint_completion_target パラメーターは、Azure Database for PostgreSQL フレキシブル サーバーがサポートする 2 番目の書き込みメカニズム (特にチェックポイント 処理) の一部です。 チェックポイントは、checkpoint_timeout で定義される一定の間隔で発生します (構成された領域を超えたことで強制実行される場合を除く)。 ページ書き込みの急増に伴う I/O システムの過負荷を回避するために、チェックポイント中のダーティ バッファーの書き込みは一定期間にわたって分散されます。 checkpoint_completion_target パラメーターはこの期間の制御を、checkpoint_timeout を使用してチェックポイント間隔に対する割合として期間を指定することにより行います。

checkpoint_completion_target の既定値は 0.9 です (PostgreSQL 14 以降)。 この値では I/O 負荷が最大期間にわたって分散されるため、一般的に最適な動作が得られます。 まれに、必要な Write-Ahead ログ (WAL) セグメントの数が予期せず変動するため、チェックポイントが時間内に終了しないことがあります。 潜在的なパフォーマンスへの影響が、インテリジェント チューニングにおいて checkpoint_completion_target がターゲット メトリックである理由です。

制限事項と既知の問題

  • インテリジェント チューニングでは、特定の範囲でのみ最適化が行われます。 機能が変更されない可能性があります。
  • インテリジェント チューニングでは ANALYZE 設定は調節されません。