メインコンテンツまでスキップ
バージョン: 2.5

ANALYZE TABLE

説明

CBO 統計を収集するための手動収集タスクを作成します。デフォルトでは、手動収集は同期操作です。非同期操作に設定することもできます。非同期モードでは、ANALYZE TABLE を実行した後、システムはこのステートメントが成功したかどうかをすぐに返します。ただし、収集タスクはバックグラウンドで実行され、結果を待つ必要はありません。タスクのステータスは SHOW ANALYZE STATUS を実行して確認できます。非同期収集は大規模データのテーブルに適しており、同期収集は小規模データのテーブルに適しています。

手動収集タスクは作成後に一度だけ実行されます。手動収集タスクを削除する必要はありません。

このステートメントは v2.4 からサポートされています。

基本統計を手動で収集する

基本統計に関する詳細は、 Gather statistics for CBO を参照してください。

構文

ANALYZE [FULL|SAMPLE] TABLE tbl_name (col_name [,col_name])
[WITH SYNC | ASYNC MODE]
PROPERTIES (property [,property])

パラメータ説明

  • 収集タイプ

    • FULL: 完全収集を示します。
    • SAMPLE: サンプル収集を示します。
    • 収集タイプが指定されていない場合、デフォルトで完全収集が使用されます。
  • col_name: 統計を収集する列。複数の列はカンマ(,)で区切ります。このパラメータが指定されていない場合、テーブル全体が収集されます。

  • PROPERTIES: カスタムパラメータ。PROPERTIES が指定されていない場合、fe.conf ファイルのデフォルト設定が使用されます。実際に使用されるプロパティは、SHOW ANALYZE STATUS の出力の Properties 列で確認できます。

PROPERTIESTypeDefault valueDescription
statistic_sample_collect_rowsINT200000サンプル収集のために収集する最小行数。このパラメータ値がテーブルの実際の行数を超える場合、完全収集が実行されます。

例 1: 手動完全収集

-- デフォルト設定を使用してテーブルの完全統計を手動で収集します。
ANALYZE TABLE tbl_name;

-- デフォルト設定を使用してテーブルの完全統計を手動で収集します。
ANALYZE FULL TABLE tbl_name;

-- デフォルト設定を使用してテーブル内の指定された列の統計を手動で収集します。
ANALYZE TABLE tbl_name(c1, c2, c3);

例 2: 手動サンプル収集

-- デフォルト設定を使用してテーブルの部分統計を手動で収集します。
ANALYZE SAMPLE TABLE tbl_name;

-- 収集する行数を指定して、テーブル内の指定された列の統計を手動で収集します。
ANALYZE SAMPLE TABLE tbl_name (v1, v2, v3) PROPERTIES(
"statistic_sample_collect_rows" = "1000000"
);

ヒストグラムを手動で収集する

ヒストグラムに関する詳細は、 Gather statistics for CBO を参照してください。

構文

ANALYZE TABLE tbl_name UPDATE HISTOGRAM ON col_name [, col_name]
[WITH SYNC | ASYNC MODE]
[WITH N BUCKETS]
PROPERTIES (property [,property]);

パラメータ説明

  • col_name: 統計を収集する列。複数の列はカンマ(,)で区切ります。このパラメータが指定されていない場合、テーブル全体が収集されます。ヒストグラムにはこのパラメータが必要です。

  • WITH N BUCKETS: ヒストグラム収集のためのバケット数 N。指定されていない場合、fe.conf のデフォルト値が使用されます。

  • PROPERTIES: カスタムパラメータ。PROPERTIES が指定されていない場合、fe.conf ファイルのデフォルト設定が使用されます。実際に使用されるプロパティは、SHOW ANALYZE STATUS の出力の Properties 列で確認できます。

PROPERTIESTypeDefault valueDescription
statistic_sample_collect_rowsINT200000収集する最小行数。このパラメータ値がテーブルの実際の行数を超える場合、完全収集が実行されます。
histogram_buckets_sizeLONG64ヒストグラムのデフォルトバケット数。
histogram_mcv_sizeINT100ヒストグラムの最も一般的な値 (MCV) の数。
histogram_sample_ratioFLOAT0.1ヒストグラムのサンプリング比率。
histogram_max_sample_row_countLONG10000000ヒストグラムのために収集する最大行数。

ヒストグラムのために収集する行数は、複数のパラメータによって制御されます。それは statistic_sample_collect_rows とテーブル行数 * histogram_sample_ratio の間の大きい方の値です。この数は histogram_max_sample_row_count で指定された値を超えることはできません。値が超えた場合、histogram_max_sample_row_count が優先されます。

-- デフォルト設定を使用して v1 のヒストグラムを手動で収集します。
ANALYZE TABLE tbl_name UPDATE HISTOGRAM ON v1;

-- 32 バケット、32 MCV、および 50% のサンプリング比率で v1 と v2 のヒストグラムを手動で収集します。
ANALYZE TABLE tbl_name UPDATE HISTOGRAM ON v1,v2 WITH 32 BUCKETS
PROPERTIES(
"histogram_mcv_size" = "32",
"histogram_sample_ratio" = "0.5"
);

参考文献

SHOW ANALYZE STATUS: 手動収集タスクのステータスを表示します。

KILL ANALYZE: 実行中の手動収集タスクをキャンセルします。

CBO の統計収集に関する詳細は、 Gather statistics for CBO を参照してください。