パフォーマンス スナップショットを比較してデータベースのパフォーマンスを最適化する

このドキュメントでは、パフォーマンス スナップショット レポートを手動で生成する方法について説明します。このレポートを使用すると、2 つの時点のシステム指標のスナップショットを比較できます。パフォーマンス スナップショット レポートを使用して、AlloyDB for PostgreSQL データベースのパフォーマンスの問題を特定して軽減できます。各スナップショットでキャプチャされるシステム指標には、仮想 CPU(vCPU)使用量、メモリ使用量、ディスク I/O、トランザクション数、待機イベントなどがあります。

自動スナップショットと手動スナップショット

AlloyDB は、次のスナップショットをサポートしています。

  • 自動スナップショット: デフォルトでは、AlloyDB は 1 日に 1 回スナップショットを自動的にキャプチャし、スナップショットを 7 日間保存します。自動スナップショットは、ワークロードの粒度を日単位でレポートを生成するのに役立ちます。自動スナップショットの保持は変更できませんが、頻度を構成することはできます。

  • 手動スナップショット: スナップショットを手動でキャプチャしてレポートを生成できます。

自動スナップショットと手動スナップショットを組み合わせて、パフォーマンス レポートを生成できます。たとえば、手動で生成したスナップショットと自動スナップショットを比較するパフォーマンス スナップショット レポートを生成できます。

このドキュメントでは、パフォーマンス スナップショット レポートを手動で生成する方法について説明します。

Performance Snapshot Report の仕組み

パフォーマンス スナップショット レポートは、パフォーマンス データをキャプチャして分析し、パフォーマンスの問題の原因を特定しやすくする AlloyDB の組み込みツールです。このツールは、インスタンスに関するリアルタイム指標を提供するシステム分析情報Query InsightsMetrics Explorer などの AlloyDB オブザーバビリティ機能と連携します。

Performance Snapshot Report では、2 つのタイムスタンプ間のデータベース指標が 1 つのレポートに表示されます。Performance Snapshot Report の情報を使用して、Performance Snapshot Report インスタンスのパフォーマンスの問題(特定の時間帯のデータベース パフォーマンスの低下や特定の期間のパフォーマンスの低下など)を特定できます。

Performance Snapshot Report を使用して指標をパフォーマンス ベースラインと比較することで、ワークロードのパフォーマンス指標に関する分析情報を取得できます。この分析情報は、データベースのパフォーマンスの最適化やトラブルシューティングに使用できます。ベースラインは、特定の構成とワークロードでデータベースの標準的なパフォーマンスと動作を測定する、カスタマイズされた一連のデータベース スナップショットです。

Performance Snapshot Report の待機イベントについては、データベースの Performance Snapshot Report のリファレンスをご覧ください。

必要なロール

alloydbsuperuser ロールがあることを確認します。デフォルトでは、AlloyDB は alloydbsuperuserpg_monitor ロールを付与します。詳細については、PostgreSQL の事前定義ロールをご覧ください。

他の自己定義ロールを使用する場合は、まず alloydbsuperuser として GRANT pg_monitor TO my_user を実行します。詳細については、適切なロールを使用して Identity and Access Management(IAM)アカウントを更新するをご覧ください。

スナップショットの作成

パフォーマンス スナップショットは、データベースのパフォーマンスを把握して最適化するための強力なツールです。特定の時点での主要なシステム指標をキャプチャし、2 つの時点間でデータベースのパフォーマンスを比較できます。AlloyDB は、次の 2 種類のスナップショットをサポートしています。

  • システム指標のスナップショット: これらのスナップショットは、vCPU 使用率、メモリ使用量、ディスク I/O などの主要なシステム指標をキャプチャします。
  • システム指標と SQL 実行統計のスナップショット: これらのスナップショットには、標準スナップショットのすべてのシステム指標と、pg_stat_statements 拡張機能の詳細な SQL 実行統計が含まれています。

これにより、分析に必要な詳細レベルを柔軟に選択できます。

システム指標のスナップショットを作成する

対象のワークロードの開始時と終了時にスナップショットを作成します。2 つのスナップショット間の時間間隔は、ワークロードの代表的なサンプルをキャプチャするのに十分な長さにする必要があります。

AlloyDB データベースのパフォーマンスを最適化する手順は次のとおりです。

  1. ベースライン スナップショットは、データベースがアイドル状態の場合や、データベースに平均的な負荷が発生している場合に作成します。
  2. psql クライアントを AlloyDB インスタンスに接続します
  3. SELECT perfsnap.snap() を実行します。出力は次のようになります。

    postgres=# select perfsnap.snap();
     snap
    ------
        1
    (1 row)
    

    このコマンドの出力は、スナップショット ID(snap_id)を返します。この例では 1 です。この ID は、後でパフォーマンス スナップショット レポートを生成するために必要になります。実際の環境の snap_id は異なる可能性があります。

  4. 作成したレポートを両方のスナップショット セットと比較し、パフォーマンスを向上させる可能性のある変化を特定します。パフォーマンスに関する推奨事項の詳細については、データベース パフォーマンスの最適化に関する推奨事項をご覧ください。

生成された Performance Snapshot Report から指標を取得したら、別の一連のスナップショットを取得してプロセスを繰り返すことができます。

SQL 実行の統計情報を含むスナップショットを作成する

デフォルトでは、AlloyDB は pg_stat_statements 拡張機能を使用して SQL ステートメントを追跡します。パフォーマンス レポートに詳細な SQL 実行統計を含めるには、まず postgres データベースに pg_stat_statements 拡張機能を作成する必要があります。これらの統計情報のキャプチャは、拡張機能の作成自体ではなく、pg_stat_statements.track フラグによって有効になります。

SQL 実行統計情報も含むスナップショットを作成する手順は次のとおりです。

  1. postgres データベースに pg_stat_statements 拡張機能を作成します。

    postgres=# CREATE EXTENSION pg_stat_statements;
    
  2. これで、スナップショットを作成すると、pg_stat_statements の SQL 統計情報が自動的に含まれるようになります。
      postgres=# select perfsnap.snap();
        snap
      ------
          2
      (1 row)
      

スナップショットのリストを表示する

  1. psql クライアントを AlloyDB インスタンスに接続します
  2. SELECT * FROM perfsnap.g$snapshots を実行します。出力は次のようになります。
        postgres=# select * from perfsnap.g$snapshots;
         snap_id |           snap_time           | instance_id | node_id | snap_description | snap_type | is_baseline
        ---------+-------------------------------+-------------+---------+------------------+-----------+-------------
               1 | 2023-11-13 22:13:43.159237+00 | sr-primary  |         | Manual snapshot  | Manual    | f
               2 | 2023-11-13 22:53:40.49565+00  | sr-primary  |         | Automatic snapshot| Automatic | f
        (2 rows)
      

Performance Snapshot Report を生成する

2 つのスナップショット(スナップショット 1 と 2 など)の差異をキャプチャするレポートを生成するには、次のコマンドを実行します。
SELECT perfsnap.report(1,2)

差分オペレーションの 2 番目のスナップショットは、最初のスナップショットの直後に続く必要はありません。ただし、差分内の 2 番目のスナップショットは、最初のスナップショットの後にキャプチャしてください。

レポートの例

生成された Performance Snapshot Report の簡略版の例を次に示します。

Performance Snapshot Report の例

$ psql -d postgres -U alloydbsuperuser
postgres=> select perfsnap.report(22, 23);

report
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 PGSNAP DB Report for:

 Snapshot details
 --------------------------------------
 Host                   i841-sr-primary-2a34f46e-06bc
 Release                14.12
 Startup Time           2024-10-08 03:23:15+00

              Snap Id    Snap Time
 ------------ ---------- ------------------------
 Begin Snap:          22 24.10.2024 04:33:56 (UTC) Automatic snapshot
   End Snap:          23 25.10.2024 04:38:56 (UTC) Automatic snapshot
    Elapsed:                      1 day 00:04:59.979321

 Database Cache sizes
 ~~~~~~~~~~~~~
            Shared Buffers:       31 GB        Block Size:         8192
      Effective Cache Size:       25 GB       WAL Buffers:        16384

 Host CPU
 ~~~~~~~~~~
       %User   %Nice %System   %Idle    %WIO    %IRQ   %SIRQ  %Steal  %Guest
     ------- ------- ------- ------- ------- ------- ------- ------- -------
        1.07    0.22    0.91   97.40    0.09    0.00    0.31    0.00    0.00

 Host Memory
 ~~~~~~~~~~~~
              Total Memory:       63 GB
          Available Memory:       11 GB
               Free Memory:      726 MB
            Buffers Memory:     3706 MB

 Load profile (in bytes)
 ~~~~~~~~~~~~~~~~~~~~~~~            Per Second         Per Transaction
                                    ------------       ---------------
                     Redo size:         63083.64               4489.93
                 Logical reads:          1961.21                139.59
                 ...

 Response Time Profile (in s)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 CPU time:               5399 (   0.39%)
 Wait time:           1386906 (  99.61%)
 Total time:           1392306

 Backend Processes Wait Class Breakdown (in s)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 IO                   119.300 (  98.91%)
 LWLock                 1.305 (   1.08%)
 IPC                     .010 (   0.01%)
 Lock                    .000 (   0.00%)

 Backend Processes Wait Information
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Event                                          Class         Waits      Time (us)      Avg (us)
 -------------------------------------- ------------- ------------- -------------- -------------
 CPU                                                                    1995948632
 WALInsert                                     LWLock             1           6656          6656

 Vacuum Information
 ~~~~~~~~~~~~~~~~~~~
             Num Analyze operations:             1976
              Num Vacuum operations:             3435

 Per Database Information
 ~~~~~~~~~~~~~~~~~~~~~~~~~
 Name                      Commits       Rollbacks     BlkRds        Blkhits       TempFiles     TempBytes
 ------------------------- ------------- ------------- ------------- ------------- ------------- -------------
 bench                             27939             0             0       7823038             0       0 bytes
 postgres                          39792             0             7      11089243             0       0 bytes

 Per Database DML & DQL Information
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Name                      Tuples returned  Tuples fetched   Tuples inserted  Tuples updated   Tuples deleted   Index splits     Index Only heap fetches   HOT updates
 ------------------------- ---------------- ---------------- ---------------- ---------------- ---------------- ---------------- ------------------------- ----------------
 bench                             16119481          4843262                0                0                0                0                        16                0
 postgres                          25415473          6327188                0               10                0                0                         0                8

 Per Database Conflict Information
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Name                      Lock Timeout  Old Snapshot  Buffer Pins   Deadlock
 ------------------------- ------------- ------------- ------------- -------------
 bench                                 0             0             0             0
 postgres                              0             0             0             0

 Per Database Vacuum Information
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Name                      Frozen XID    % Consumed    Aggregate Vacuum Gap
 ------------------------- ------------- ------------- --------------------
 bench                         179460916         9.00%         20539084
 postgres                      179339239         9.00%         20660761

 Per Database Sizing Information
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                    Conn.
 Name                 Collation     Limit   Tablespace           DB Size    Growth
 -------------------- ------------- ------- -------------------- ---------- ----------
 bench                C.UTF-8            -1 pg_default                80 GB    0 bytes
 postgres             C.UTF-8            -1 pg_default               135 MB    0 bytes

 Backend Wait Event Histogram
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Event                                          Class       Waits    <= 1us    <= 2us    <= 4us    <= 8us   <= 16us   <= 32us   <= 64us  <= 128us  <= 256us  <= 512us
 -------------------------------------- ------------- ----------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------
 WALInsert                                  LWLock             1         0         0         0         0         0         0         0         0         0         0

 Background Wait Event Histogram
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Event                                          Class       Waits    <= 1us    <= 2us    <= 4us    <= 8us   <= 16us   <= 32us   <= 64us  <= 128us  <= 256us  <= 512us
 -------------------------------------- ------------- ----------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------
 WALInsert                                  LWLock           542       107       174        39       113        93         8         1         1         0         1

 Write Ahead Log (WAL) Statistics
 --------------------------------
 Records       Full Page Images   Bytes        Buffers Full   Write         Sync          Write Time    Sync Time
 -----------   ----------------   -----------  ------------   -----------   -----------   -----------   -----------
     2936305                100     805989345             0             0             0             0             0

 Summary Stats (across all databases)
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Name                             Value
 -------------------------------- ----------------------------------
 Buffers evicted                  0
 Commits                          1216693
 ...

 Parameter Settings
 ~~~~~~~~~~~~~~~~~~~
 Parameter                         Value
 --------------------------------- --------------------------------------------------------------
 DateStyle                            ISO, MDY
 TimeZone                             UTC
 autovacuum                           on
 work_mem                             4096

 Columnar Engine available size  Columnar Engine configured size
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                       14959MB                         19293MB

 Columnar Engine Statistics
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 name                                                       count
 ---------------------------------------------------------- ------------
 CU Populations/Refreshes                                          13197
 CU Auto Refreshes                                                 10975
 ...
 Columnar Engine Ultra-fast Cache Statistics
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Ultra-fast Cache Size (MB):                        19200
 Ultra-fast Cache Used Size (MB):                       0
 Ultra-fast Cache Block Size (MB):                     80

 SQL Report
 ~~~~~~~~~~
 NOTE: Query might be empty if query ID does not have a match in pg_stat_statements at report time. This is expected if the query is not run recently.
 Per Query Information (Top 50) By Total Elapsed Time
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Query Text                                                                                                 UserID         DBID          DBName          QueryID            Total Elapsed Time(ms)    Execution Count       Avg Elapsed Time(ms)
 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    prepare neword (INTEGER, INTEGER, INTEGER, INTEGER, INTEGER) as select neword($1,$2,$3,$4,$5,$6)        36272        36274            tpcc      -5467151541922966497           276400877.8014            36928106                    7.4848
 prepare payment (INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, INTEGER, NUMERIC, VARCHAR) AS select p        36272        36274            tpcc       3864683359055073968           127719636.4656            36928456                    3.4586
                                        prepare delivery (INTEGER, INTEGER) AS select delivery($1,$2)        36272        36274            tpcc       2323704420019807054            48540963.0880             3694128                   13.1400
                                    prepare slev (INTEGER, INTEGER, INTEGER) AS select slev($1,$2,$3)        36272        36274            tpcc      -8637448842172635004            35361366.9271             3692785                    9.5758
 ...

 Per Query Information (Top 50) By Read IO
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Query Text                                                                                                 UserID         DBID          DBName          QueryID            Total ReadIO Time(ms)        Execution Count    Avg ReadIO Time(ms)    Total buffer hits         Avg buffer hits    Total blk reads         Avg blk reads
 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 prepare ostat (INTEGER, INTEGER, INTEGER, INTEGER, VARCHAR) AS select * from ostat($1,$2,$3,$4,$5) a        36272        36274            tpcc      -1640504351418263816              498072.4004             3693895                    0.1348            80360201         21.75486877672484              105858 0.028657555236410347
                                        prepare delivery (INTEGER, INTEGER) AS select delivery($1,$2)        36272        36274            tpcc       2323704420019807054                  12.5438             3694128                    0.0000          4477308168        1212.0067761593534             1219908 0.33022894712906536
     prepare neword (INTEGER, INTEGER, INTEGER, INTEGER, INTEGER) as select neword($1,$2,$3,$4,$5,$6)        36272        36274            tpcc      -5467151541922966497                   0.8039            36928106                    0.0000         10337394097         279.9329620912592             6245570 0.16912781825312134
              SELECT name, default_version, installed_version FROM pg_catalog.pg_available_extensions           10            5        postgres       6619165036968781114                   0.0000                 361                    0.0000                 361                         1                   0                   0
 ...

 Per Query Information (Top 50) By Standard Deviation of Elapsed Time
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Query Text                                                                                                 UserID         DBID          DBName          QueryID            Begin STDDEV Elapsed Time(ms)  End STDDEV Elapsed Time(ms)
 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                                                           SELECT COUNT($1) FROM perfsnap.g$snapshots           10            5        postgres      -8741741796612173369                      17.8084                      18.1239
                                        prepare delivery (INTEGER, INTEGER) AS select delivery($1,$2)        36272        36274            tpcc       2323704420019807054                      15.0626                      19.8495
     prepare neword (INTEGER, INTEGER, INTEGER, INTEGER, INTEGER) as select neword($1,$2,$3,$4,$5,$6)        36272        36274            tpcc      -5467151541922966497                      13.9820                      17.0074
                                    prepare slev (INTEGER, INTEGER, INTEGER) AS select slev($1,$2,$3)        36272        36274            tpcc      -8637448842172635004                       8.4333                       9.6205

 ----------------------------------------------------
 Created by G_STATS v1.0.100
 ----------------------------------------------------
(xxx rows)

  

レポート フィールドとパフォーマンス最適化の推奨事項については、データベース パフォーマンス最適化に関する推奨事項をご覧ください。Performance Snapshot Report の待機イベントの詳細については、データベースの Performance Snapshot Report のリファレンスをご覧ください。

スナップショットの削除

既存のベースラインに含まれるスナップショットを削除する前に、ベースラインを消去する必要があります。

スナップショットを削除するには、次のコマンドを実行します。

SELECT perfsnap.delete(SNAP_ID);

SNAP_ID は、削除するスナップショットの ID に置き換えます。

削除したスナップショットは復元できません。

スナップショットをパフォーマンス ベースラインとしてマークする

たとえば ID が 1~3 のすべてのスナップショットをシステム パフォーマンスのベースラインとしてマークするには、
SELECT perfsnap.make_baseline(1, 3) を実行します。

パフォーマンス ベースラインを消去する

たとえば ID が 1~3 のすべてのベースラインを消去するには、SELECT perfsnap.clear_baseline(1, 3) を実行します。

自動スナップショットの頻度を変更する

自動スナップショットの頻度をカスタマイズするには、perfsnap.interval フラグを設定します。このフラグは、自動スナップショットの間隔を秒単位で設定します。詳細については、データベース フラグを構成するをご覧ください。

意味のある情報を取得するには、フラグの値を数分以上に設定することをおすすめします。

リソースの無駄遣いを避けるため、カスタマイズした頻度が不要になったら、フラグをデフォルト値(1 日あたりの秒数)にリセットします。

スナップショット レポートの結果を使用してデータベースのパフォーマンスを最適化する

AlloyDB データベースのパフォーマンスを最適化する手順は次のとおりです。

  1. ベースライン スナップショットは、データベースがアイドル状態の場合や、データベースに平均的な負荷が発生している場合に作成します。
  2. パフォーマンスを改善するワークロードまたはクエリを開始します。
  3. ワークロードまたはクエリがリソース使用量のピークに達したら、別のスナップショット セットを作成します。両方のレポートに同じ期間を使用することをおすすめします。
  4. 作成したレポートを両方のスナップショット セットと比較し、パフォーマンスを向上させる可能性のある変化を特定します。パフォーマンスに関する推奨事項の詳細については、データベース パフォーマンスの最適化に関する推奨事項をご覧ください。

データベース パフォーマンスの最適化に関する推奨事項

次の表に、Performance Snapshot Report のセクションと、各レポート セクションで推奨される改善策を示します。Performance Snapshot Report のセクションと待機イベントの詳細については、データベースの Performance Snapshot Report のリファレンスをご覧ください。

セクション レポートの項目 レポートの項目の説明 おすすめの最適化案
スナップショットの詳細 スナップショットの詳細 ホスト、PostgreSQL 互換のリリース バージョン、マシンが稼働している時刻を指定します。 なし
スナップショット ID このレポートの作成に使用されたスナップショットの ID と特定の時点が一覧表示されます。 なし
システム分析情報 ホスト CPU ホストの CPU 使用率の詳細。 CPU 使用率が 80% を超える場合は、使用可能な次のサイズにスケールアップすることをおすすめします。
ホストメモリ ホストメモリ使用率の詳細。 空きメモリが 15% 未満の場合は、使用可能な次のサイズにスケールアップすることをおすすめします。
負荷プロファイル 生成された write-ahead log 書き込み(WAL)、I/O 要件、接続管理のワークロードの特性の把握に役立つカウンタを一覧表示します。 物理読み取りが論理読み取りよりも大きい場合は、使用可能な次のサイズにスケールアップして、より大きなデータ キャッシュをサポートすることを検討してください。
応答時間と待ち時間クラスの内訳 ワークロードの実行中に Postgres プロセスが費やした時間の内訳。 たとえば、プロセスのほとんどが待機状態にある場合は、I/O 待機時間の短縮に重点を置いて調整します。
データベース ワークロード情報 データベースごとのワークロード情報 各データベースの主要な指標(commit、ロールバック、ヒット率、一時テーブルと並べ替えオペレーションに関する情報など)。 ロールバックが多い場合は、アプリの診断を検討してください。
データベースごとの DML と DQL の情報 クエリ オペレーションのカウンタ。 ワークロードを読み取り負荷が高いか書き込み負荷が高いかに分類します。
データベースの競合情報 アプリケーションとデータベースに関する一般的な問題のカウンタ。 デッドロックがある場合は、アプリケーションの問題を特定します。
データベースのサイズ設定情報 2 つのスナップショット間の期間にデータベースがどれだけ拡大したかを示します。このフィールドには、データベースに接続上限が設定されているかどうかも示されます。 データベースの拡大が大きすぎる場合は、アプリケーションの問題を特定します。
バキュームに関する情報 バキュームに関する情報 バキューム オペレーションの I/O とカウンタの詳細。 デフォルトでは、AlloyDB は適応型バキュームを実行します。一部のバキューム設定は、ワークロードに合わせてオーバーライドできます。たとえば、これらのリクエストに過剰な I/O が費やされている場合は、バキューム オペレーションを減らします。
データベースごとのバキューム情報 次の情報が表示されます。
  • 各データベースの datfrozenxid(凍結されていない最も古い XID)の現在の経過時間、または datfrozenxid から現在のトランザクションの XID までのトランザクション数。
  • すべてのトランザクション ID のうち、凍結されていないトランザクション ID の使用量。
  • autovacuum_freeze_max_age - age(pg_database.datfrozenxid) の結果。データベースの集計レベルでラップアラウンドを防ぐために自動バキュームがトリガーされた 2 番目のスナップショット時間におけるおおよその経過時間差(トランザクション単位)を示します。
凍結された XID フィールドの経過時間が古すぎる場合や、消費されたトランザクションの割合が 90% に近い場合は、バキュームを検討してください。集計バキューム ギャップが減少すると、ラップアラウンドを防ぐために Postgres によってバキュームが適用されることを示します。
データベース プロセスの待機の詳細 バックエンドとバックグラウンド プロセスの詳細情報 レポート期間内のバックエンド プロセスとバックグラウンド プロセスによるすべての待機の詳細。情報には、累積待機時間、CPU 時間、待機タイプごとの平均時間が含まれます。 WALWrite の待ち時間を短縮するには、データベースで使用可能な wal_buffers の数を増やします。
バックエンドとバックグラウンドの待機イベントの詳細なヒストグラム これは、デフォルトで Performance Snapshot Report に含まれています。このリストには、バックエンド プロセスとバックグラウンド プロセスの待機イベントのヒストグラムが含まれます。このヒストグラムは、1 マイクロ秒から 16 秒を超える 32 個のバケットに分割されています。 待機イベントを特定して、より大きな待ち時間バケットであまりに多くの待機イベントが存在していないかを判断します。待機イベントが多すぎるか、消費された各待機時間に問題がある可能性があります。
その他の統計情報 write-ahead log(WAL)の統計情報 WAL の統計情報の概要。 同期時間が長すぎる場合は、関連するデータベース フラグ(GUC)を調整してワークロードを改善します。GUC は、サーバー構成を処理する PostgreSQL サブシステムです。
集約統計情報(全データベース分) スナップショット期間中に発生したすべてのデータベース オペレーションの概要。 なし
パラメータの設定 パラメータの設定 終了スナップショット時の主な Postgres 構成パラメータ。 GUC パラメータ設定(Postgres データベース フラグ)を確認し、値が想定されていないか、推奨されていないかを判断します。
SQL 実行統計情報 クエリごとの情報(上位 50 件) - 合計経過時間別 2 つのスナップショット間で経過時間が最も長かった上位 50 件のクエリと、その合計実行回数を、クエリが発行されたユーザーとデータベース別に表示します。
Elapsed time = Difference of total_exec_time in pg_stat_statements at the two snapshot time
このセクションでは、システム時間の大部分を占める最も負荷の高いクエリを特定します。
クエリごとの情報(上位 50 件)(読み取り IO 別) 2 つのスナップショット間で読み取り IO 時間が最も長かった上位 50 件のクエリと、その実行数、バッファヒット数、ブロック読み取り数を合計と平均の両方で一覧表示します。
ReadIO = blk_read_time + temp_blk_read_time 2 つのスナップショット間で累積
Buffer Hits = shared_blks_hit + local_blks_hit 2 つのスナップショット間で累積
Buffer Reads = shared_blks_read + local_blks_read 2 つのスナップショット間で累積
これらのフィールドは、track_io_timing が設定されているため、AlloyDB Cloud によってデフォルトで追跡されます。
このセクションでは、特にディスクからの読み取り頻度が高い I/O 集中型クエリを特定します。
クエリごとの情報(上位 50 件)経過時間の標準偏差別 経過時間の標準偏差が最も大きい上位 50 件のクエリを一覧表示します。開始スナップショット時間と終了スナップショット時間の両方で計算された標準偏差を一覧表示します。
ここで、値は pg_stat_statementsstddev_exec_time を参照します。
標準偏差が大きいクエリは、クエリの実行時間が大きく変動していることを意味します。この場合は、I/O を確認する必要があります。

制限事項

  • ストレージの過剰な消費によるスペースの肥大化を防ぐため、1 つのインスタンスで手動的に作成できるスナップショットは最大 2, 500 個です。

  • スナップショットの数がスナップショットの上限を超えると、AlloyDB は 90 日より古い手動スナップショットをすべて削除します。スナップショットの上限内に収めるには、新しいスナップショットを取得する前に不要なスナップショットをクリーンアップする必要があります。

  • AlloyDB は、90 日より古い手動スナップショットを定期的にクリーンアップします。

次のステップ