メインコンテンツまでスキップ

ANALYZE TABLE

ANALYZE TABLE

概要

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

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

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

基本統計情報の手動収集

基本統計情報の詳細については、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列で表示できます。

PROPERTIES

Type

Default value

Description

statistic_sample_collect_rows

INT

200000

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

例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"
);

ヒストグラムの手動収集

ヒストグラムの詳細については、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列で表示できます。

PROPERTIES

Type

Default value

Description

statistic_sample_collect_rows

INT

200000

収集する行の最小数。パラメータ値がテーブルの実際の行数を超える場合、完全収集が実行されます。

histogram_buckets_size

LONG

64

ヒストグラムのデフォルトバケット数。

histogram_mcv_size

INT

100

ヒストグラムの最も一般的な値(MCV)の数。

histogram_sample_ratio

FLOAT

0.1

ヒストグラムのサンプリング比率。

histogram_max_sample_row_count

LONG

10000000

ヒストグラムのために収集する行の最大数。

ヒストグラムの収集には複数のパラメータが関与します。収集する行数は、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の統計情報の収集についての詳細は、CBOのための統計情報の収集を参照してください。