すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:手動で統計を収集する

最終更新日:Oct 18, 2024

統計には、データベースとテーブルのメタデータに関する情報が含まれます。 クエリオプティマイザは、最新の統計を使用して実行計画を最適化および実行し、データベースのパフォーマンスを向上させます。 このトピックでは、ANALYZEステートメントを使用して、AnalyticDB for PostgreSQLの統計を手動で収集する方法について説明します。

シナリオ

手動統計収集を頻繁に実行する必要はありません。 ANALYZEステートメントを実行して、次のシナリオで統計を手動で収集できます。

  • テーブル内の20% 以上のデータがINSERTUPDATE、またはDELETE文によって変更されるか、テーブルのインデックスが作成されます。

  • 抽出、変換、読み込み (ETL) ジョブ中に、複数のINSERTUPDATE、またはDELETEステートメントが実行されます。

  • データは、関数やストアドプロシージャなどの操作を使用して新しいテーブルに書き込まれます。

  • 実行計画は、1行のみが返されると推定されることを示しています。 実行計画には、Broadcast、Sort + GroupByAgg、NestLoopなどの複数の演算子が含まれます。

使用量

ANALYZEステートメントを実行して、AnalyticDB for PostgreSQLの統計を手動で収集できます。

構文

ANALYZE [VERBOSE] [ROOTPARTITION ALL|[table [(column[, ... ])]] ]
説明

ANALYZEステートメントは、パラメーターなしで実行できます。 この場合、ステートメントはデータベース内のすべてのテーブルの統計を収集します。 この操作には長時間を要する場合がある。

Parameters

  • VERBOSE: スキャンされた行数や表示される行数など、ANALYZEステートメントの実行プロセスに関する統計情報を表示します。 VERBOSEパラメーターを指定しない場合、実行プロセスに関する統計は表示されません。

  • ROOTPARTITION ALL |[table [(column[, ... ])]]: 分割テーブルの親テーブルの統計を収集します。

    • ROOTPARTITION ALL: データベース内のすべてのパーティションテーブルの親テーブルの統計を収集します。

    • ROOTPARTITION [table]: データベース内の特定のパーティションテーブルの親テーブルの統計を収集します。

    • ROOTPARTITIONパラメーターを指定しない場合、ANALYZEステートメントはすべての親テーブルとサブパーティションテーブルの統計を収集します。

  • table[(column1, column2, ...)]: テーブルの複数の列の統計を収集します。 列名を指定しない場合、ANALYZEステートメントはテーブルのすべての列の統計を収集します。 ANALYZEステートメントをすばやく実行するには、JOINWHEREORDER BYGROUP BY、またはHAVINGステートメントを含む列の統計のみを収集します。 この場合、ANALYZEステートメントでテーブル名と列名を指定する必要があります。 例: ANALYZE t1(a, b)

注文テーブルのo_orderdate列とo_orderpriority列の統計を収集します。

ANALYZE orders(o_orderdate, o_orderpriority);