AnalyticDB for MySQLでは、SET ADB_CONFIG
ステートメントを実行するか、ヒントを指定してパラメーターを設定できます。 SET ADB_CONFIG
ステートメントは、AnalyticDB for MySQLクラスター全体に適用され、グローバル設定に使用できます。 ヒントは特定のSQL文にのみ適用され、グローバル構成には影響しません。 SET ADB_CONFIG
ステートメントとヒントの両方を使用して特定の構成項目を構成する場合、ヒントが優先されます。 このトピックでは、AnalyticDB for MySQLの一般的な設定パラメーターとヒントについて説明します。
共通設定パラメーター
設定アイテム | パラメーター | 説明 | 例 | 関連ドキュメント |
切り替えウィンドウ | REPLICATION_SWITCH_TIME_RANGE | 既存のクラスターが新しいクラスターに切り替えられるウィンドウ。 新しいクラスターへの切り替え中、既存のクラスターは5〜10分間読み取り専用になります。 既存のクラスターに接続した後、REPLICATION_SWITCH_TIME_RANGEパラメーターを使用して切り替えウィンドウを指定できます。 説明 切り替えウィンドウを指定しない場合、既存のクラスターの増分データが新しいクラスターにリアルタイムで同期された後、既存のクラスターが新しいクラスターに切り替えられます。 |
| |
IN演算子で指定した値の最大数 | MAX_IN_ITEMS_COUNT | IN演算子で指定できる値の最大数。 デフォルト値: 4000 値は0より大きい整数でなければなりません。 |
| |
クエリのタイムアウト期間 | QUERY_TIMEOUT | クラスター内のすべてのクエリのタイムアウト期間。 値は0より大きい整数でなければなりません。 単位:ミリ秒。 |
| |
INSERT、UPDATE、およびDELETEステートメントのタイムアウト期間 | INSERT_SELECT_TIMEOUT | クラスター内のINSERT、UPDATE、およびDELETEステートメントの最大実行期間。 デフォルト値: 24 × 3600000。 値は0より大きい整数でなければなりません。 単位:ミリ秒。 |
| |
プッシュダウンなしのフィルター条件 |
| クラスター内の特定の列に対するフィルター条件のプッシュダウンを無効にします。 |
| |
クエリ実行モード | QUERY_TYPE | クラスターのクエリ実行モード。 有効な値:
説明 予約モードのAnalyticDB for MySQL Data Warehouse Edition (V3.0) クラスターまたはAnalyticDB for MySQL Data Lakehouse Edition (V3.0) クラスターのクエリ実行モードを変更することはできません。 |
| |
クエリキュー | XIHE_ENV_QUERY_ETL_MAX_CONCURRENT_SIZE | 単一のフロントエンドノード上のLOWESTキューに対して実行できるクエリの最大数。 デフォルト値は 20 です。 |
| |
XIHE_ENV_QUERY_ETL_MAX_QUEUED_SIZE | 単一のフロントエンドノード上のLOWESTキューに対してキューに入れることができるクエリの最大数。 デフォルト値:200 |
| ||
XIHE_ENV_QUERY_LOW_PRIORITY_MAX_CONCURRENT_SIZE | 単一のフロントエンドノード上のLOWキューに対して実行できるクエリの最大数。 デフォルト値は 20 です。 |
| ||
XIHE_ENV_QUERY_LOW_PRIORITY_MAX_QUEUED_SIZE | 単一のフロントエンドノード上のLOWキューに対してキューに入れることができるクエリの最大数。 デフォルト値:200 |
| ||
XIHE_ENV_QUERY_NORMAL_MAX_CONCURRENT_SIZE | 単一のフロントエンドノード上のNORMALキューに対して実行できるクエリの最大数。 デフォルト値は 20 です。 |
| ||
XIHE_ENV_QUERY_NORMAL_MAX_QUEUED_SIZE | 単一のフロントエンドノード上のNORMALキューに対してキューに入れることができるクエリの最大数。 デフォルト値:200 |
| ||
XIHE_ENV_QUERY_HIGH_MAX_CONCURRENT_SIZE | 1つのフロントエンドノードのHIGHキューに対して実行できるクエリの最大数。 デフォルト値: 40。 |
| ||
XIHE_ENV_QUERY_HIGH_MAX_QUEUED_SIZE | 1つのフロントエンドノードのHIGHキューにキューできるクエリの最大数。 デフォルト値: 400 |
| ||
Object Storage Service (OSS) 外部テーブルを使用したデータインポート | HIVE_SPLIT_ASYNC_GENERATION_ENABLED | Hiveが実行プランを生成するときに、分割を実行するタスクを実行キューに非同期に送信するかどうかを指定します。 有効な値:
説明 このパラメーターは、V3.1.10.1以降のAnalyticDB for MySQLクラスターでのみサポートされます。 |
| |
MaxCompute外部テーブルを使用したデータインポート | SQL_OUTPUT_BATCH_SIZE | 一度にインポートできるエントリの最大数。 値は0より大きい整数でなければなりません。 |
| |
ENABLE_ODPS_MULTI_PARTITION_PART_MATCH | 各MaxComputeパーティションのエントリ数を事前に取得するかどうかを指定します。 |
| ||
ASYNC_GET_SPLIT | MaxComputeが実行プランを生成するときに、スプリットローディングパフォーマンスを最適化して、タスクを実行用キューに非同期に送信するかどうかを指定します。 有効な値:
説明 このパラメーターは、V3.1.10.1以降のAnalyticDB for MySQLクラスターでのみサポートされます。 |
| ||
ビルドジョブの自動スケジューリング | RC_CSTORE_BUILD_SCHEDULE_PERIOD | ビルドジョブをスケジュールする時間範囲。 このパラメーターは、ジョブの実行ではなく、ジョブスケジューリングに適用されます。 開始時間と終了時間は整数でなければなりません。 有効な値: 0 ~ 24。 |
| |
BUILDジョブのスケジューリング優先順位 | ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST | 1つ以上のテーブルのBUILDジョブのスケジューリング優先度。 設定された優先順位は、テーブルのBUILDジョブの新しいスケジューリング優先順位を設定するまで有効です。
|
| |
Elastic import | RC_ELASTIC_JOB_SCHEDULER_ENABLE | エラスティックインポート機能を有効にします。 |
| |
REMOTE_CALL関数 | XIHE_REMOTE_CALL_SERVER_ENDPOINT | ユーザー定義関数 (UDF) のREMOTE_CALL関数を呼び出すときに使用されるFunction Computeの内部エンドポイント。 詳細については、「エンドポイント」をご参照ください。 |
| |
XIHE_REMOTE_CALL_SERVER_AK | UDFのREMOTE_CALL関数を呼び出すときに使用される、Function Computeサービスが属するAlibaba CloudアカウントまたはResource Access Management (RAM) ユーザーのAccessKey ID。 |
| ||
XIHE_REMOTE_CALL_SERVER_SK | Function Computeサービスが属するAlibaba CloudアカウントまたはRAMユーザーのAccessKeyシークレットは、UDFのREMOTE_CALL関数を呼び出すときに使用されます。 |
| ||
XIHE_REMOTE_CALL_COMPRESS_ENABLED | UDFのREMOTE_CALL関数を呼び出すときに、データをFunction Computeに送信する前にデータをGZIP形式に圧縮するかどうかを指定します。 |
| ||
XIHE_REMOTE_CALL_MAX_BATCH_SIZE | UDFのREMOTE_CALL関数を呼び出すときに、一度にFunction Computeに送信できるデータ行の最大数。 |
| ||
スプリットフロー制御 | ADB_CONFIG SPLIT_FLOW_CONTROL_ENABLED | 分割フロー制御機能を有効にするかどうかを指定します。 AnalyticDB for MySQLでは、ノードの同時分割スキャンのクォータを設定して、過剰な同時分割スキャンとリソース使用によって引き起こされるノードの不安定性を防ぐことができます。 有効な値:
|
| |
ADB_CONFIG NODE_LEVEL_SPLIT_FLOW_CONTROL_ENABLED | タスクの同時分割スキャンのクォータを動的に調整できる機能を有効にするかどうかを指定します。 AnalyticDB for MySQLでは、タスクが実行されるノードの同時分割スキャンの全体的なクォータに基づいて、タスクの同時分割スキャンのクォータを動的に調整できます。 有効な値:
|
| ||
MIN_RUNNING_SPLITS_LIMIT_PER_TASK | タスク内の同時分割スキャンの最小クォータ。 デフォルト値は 1 です。 有効な値の範囲は、 |
| ||
TARGET_RUNNING_SPLITS_LIMIT_PER_TASK | タスクの同時分割スキャンの中間クォータ。 実際のクォータは、このパラメーターの値に基づいて動的に増減されます。 デフォルト値: 32。 有効な値は、 |
| ||
MAX_RUNNING_SPLITS_LIMIT_PER_TASK | タスクの同時分割スキャンの最大クォータ。 デフォルト値: 64。 このパラメーターの値は、 |
| ||
ADB_CONFIG WORKER_MAX_RUNNING_SOURCE_SPLITS_PER_NODE | デフォルトでは、ストレージノードでの同時分割スキャンのクォータは256です。 クォータが大きすぎるか小さすぎるとクラスターのパフォーマンスに影響を与える可能性があるため、デフォルト値は変更しないことをお勧めします。 |
| ||
ADB_CONFIG EXECUTOR_MAX_RUNNING_SOURCE_SPLITS_PER_NODE | デフォルトでは、計算ノードでの同時分割スキャンのクォータは256です。 クォータが大きすぎるか小さすぎるとクラスターのパフォーマンスに影響を与える可能性があるため、デフォルト値は変更しないことをお勧めします。 |
|
一般的なヒントパラメーター
設定アイテム | パラメーター | 説明 | 例 | 関連ドキュメント |
クエリのタイムアウト期間 | QUERY_TIMEOUT | 1つのクエリのタイムアウト期間。 値は0より大きい整数でなければなりません。 単位:ミリ秒。 |
| |
INSERT、UPDATE、およびDELETEステートメントのタイムアウト期間 | INSERT_SELECT_TIMEOUT | クエリ内のINSERT、UPDATE、およびDELETEステートメントの最大実行期間。 デフォルト値: 24 × 3600000。 値は0より大きい整数でなければなりません。 単位:ミリ秒。 |
| |
プッシュダウンなしのフィルター条件 |
| クエリの特定の列に対するフィルター条件のプッシュダウンを無効にします。 |
| |
BUILDジョブのスケジューリング優先順位 | build_task_priority | BUILDジョブのスケジューリング優先度。 ヒントを使用して、一度に1つのテーブルに対してのみBUILDジョブのスケジューリング優先順位を設定できます。 デフォルト値:0 値は0以上の整数である必要があります。 値が大きいほど、高いスケジューリング優先度を指定します。 |
| |
Elastic import |
| エラスティックインポートを選択し、インポートジョブのリソースグループを設定します。 |
| |
実行計画 |
| ハッシュ結合アルゴリズムは、右テーブルを使用してハッシュテーブルを構築し、左joinは左テーブルと右テーブルを並べ替えません。 その結果、右側のテーブルに大量のデータがあると、実行が遅くなり、メモリが過剰に消費されるなどの問題が発生する可能性があります。 SQLステートメントの前にヒントを追加して、リソース消費に基づいてLEFT JOINをRIGHT JOINに変更するようにオプティマイザを構成できます。 有効な値:
|
| |
reorder_joins | 自動結合順序調整機能を有効にするかどうかを指定します。 デフォルトでは、AnalyticDB MySQLの自動結合順序調整機能が有効になっています。 この機能を無効にすると、クエリのデータ特性に基づいて結合順序を手動で調整できます。 これにより、SQL文の結合順序に基づいてクエリを実行できます。 有効な値:
|
| ||
aggregation_path_type | クエリの部分集約を強制的にスキップするかどうかを指定します。 多数のグループを含むグループ化および集約シナリオでは、2ステップ集約は多数のコンピューティングリソースを消費する。 このヒントパラメーターの値をsingle_aggに設定すると、部分的な集計をスキップしてクエリの最終的な集計を直接実行できます。 有効な値:
|
| ||
Runtimeポリシー | hash_partition_count | 各コンピューティングジョブを分割できる同時タスクの数。 タスク分割は、コンピューティングリソースを最大限に活用するのに役立ちます。 デフォルト値: 32。 値は0より大きい整数でなければなりません。 |
| なし |
task_writer_count | INSERT INTO SELECTステートメントを使用して実行された同時インポートジョブの数。 ストレージノードがオーバーロードされている場合は、このヒントパラメーターを使用して、同時インポートジョブの数を減らすことができます。 デフォルト値: 16。 値は0より大きい整数でなければなりません。 |
| ||
cte_execution_mode | 共通テーブル式 (CTE) 実行最適化機能を有効にするかどうかを指定します。 CTE実行最適化機能が有効化された後にCTEサブクエリが繰り返し参照される場合、サブクエリは1回だけ実行され、特定のクエリのパフォーマンスが向上します。 有効な値:
|
| ||
クエリ条件の制限 | query_max_shuffle_data_size_mb | クエリのシャッフルされたデータの最大量。 デフォルトでは、クエリされたデータの量に関係なく、エラーは返されません。 このパラメーターを指定し、クエリ内のクエリされたデータの量が指定された値を超えると、システムはクエリを終了し、エラーを返します。 値は0より大きい整数でなければなりません。 単位:MB。 |
| なし |
max_select_items_count | SELECT条件の最大数。 デフォルト値: 1024。 値は0より大きい整数でなければなりません。 |
| ||
max_in_items_count | IN条件の最大数。 デフォルト値: 4000 値は0より大きい整数でなければなりません。 |
| ||
max_where_items_count | WHERE条件の最大数。 デフォルト値: 256 値は0より大きい整数でなければなりません。 |
| ||
OSS外部テーブル | output_filename | データをエクスポートするOSSオブジェクトの名前。 OSS外部テーブルを使用してデータをエクスポートする場合、データエクスポートステートメントの前にこのヒントを追加して、OSSオブジェクトの名前を指定できます。 |
| |
sql_output_oss_file_head_enable | OSSにエクスポートされるデータに列名を含めるかどうかを指定します。 デフォルトでは、OSS外部テーブルを使用してOSSにエクスポートされたデータには列名は含まれません。 データに列名を指定する場合は、データインポートステートメントの前に /* + SQL_OUTPUT_OSS_FILE_HEAD_ENABLE=true */ hintを追加します。 有効な値:
|
| ||
hive_split_async_generation_enabled | Hiveが実行プランを生成するときに、分割を実行するタスクを実行キューに非同期に送信するかどうかを指定します。 有効な値:
説明 このパラメーターは、V3.1.10.1以降のAnalyticDB for MySQLクラスターでのみサポートされます。 |
| ||
fast_parquet_reader_enable | Parquetファイルの統計が正しくない場合、ネイティブParquetリーダーにロールバックするかどうかを指定します。 有効な値:
|
| ||
oss_vectorized_parquet_reader_enable | データにNULL値が含まれていない場合、Parquetファイルのベクトル化された読み取りを有効にするかどうかを指定します。 有効な値:
|
| ||
oss_vectorized_parquet_reader_null_scene_enable | データにNULL値が含まれる場合にParquetファイルのベクトル化された読み取りを有効にするかどうかを指定します。 有効な値:
|
| ||
hudi_metadata_table_enabled | Hudiメタデータを読み込むかどうかを指定します。 有効な値:
|
| ||
hudi_query_type | Hudiテーブルをクエリするモード。 有効な値:
|
| ||
hudi_realtime_skip_merge | Hudiテーブルをスナップショットモードで照会するときに、ベースファイルとログファイルのマージをスキップするかどうかを指定します。 有効な値:
|
| ||
hudi_max_split_size | 分割の最大サイズ。 デフォルト値: 128 単位:MB。 |
| ||
hudi_split_parallel_generation_enabled | スプリットを並列に生成するかどうかを指定します。 有効な値:
|
| ||
hudi_data_skipping_enabled | Hudi MetaTableの統計を使用して、クエリのパフォーマンスを向上させるために読み取る必要のない分割をスキップするかどうかを指定します。 有効な値:
|
| ||
hudi_split_async_generation_enabled | 実行計画の生成中にHudi分割を非同期で生成するかどうかを指定します。 有効な値:
|
| ||
ApsaraDB RDS for MySQL外部テーブル | jdbc_scan_splits | Java Database Connectivity (JDBC) ベースのTableScan操作に含まれる分割の数。 設定可能な値は 1~100 です。 デフォルト値は 1 です。 |
| |
jdbc_split_column | ApsaraDB RDS for MySQL外部テーブルを読み取るときに分割を分割するために使用される列の名前。 |
| ||
jdbc_insert_directly | 宛先テーブルにデータを直接書き込むかどうかを指定します。 デフォルトでは、ApsaraDB RDS for MySQL外部テーブルを使用してデータを書き込む場合、データは最初に一時テーブルに書き込まれ、次に宛先テーブルに書き込まれます。 /* + JDBC_INSERT_DIRECTRY=true * /ヒントを使用して、データを宛先テーブルに直接書き込むように設定できます。 ただし、書き込みプロセス中にエラーが発生した場合、宛先テーブルにダーティデータがあります。 有効な値:
|
| ||
Tablestore外部テーブル | ots-insert-as-update | UPDATEステートメントをINSERTステートメントに置き換えるかどうかを指定します。 有効な値:
|
| |
MaxCompute外部テーブル | odps_split_limit | Tunnelを使用してデータを読み取るときに許可される分割の最大数。 有効な値: 1 ~ 1000 デフォルト値は 1000 です。 |
| |
ignore_partition_cache | パーティション条件に基づいてクエリが実行される場合、キャッシュされたパーティションメタデータを使用するのではなく、MaxComputeテーブルからパーティションメタデータを直接クエリするかどうかを指定します。
|
| ||
rows_per_split | Tunnelを使用してデータを読み取るときに、1つの分割に含めることができる行の最大数。 有効な値: 10000〜500000。 デフォルト値: 500000 |
| ||
storage_api_enabled | MaxComputeストレージAPIを使用してMaxComputeデータを読み取るかどうかを指定します。 従来のTunnelサービスと比較して、MaxCompute Storage APIは読み取りパフォーマンスを大幅に向上させます。 有効な値:
|
| ||
split_byte_size | MaxCompute Storage APIを使用してデータを読み取る場合の単一分割の最大サイズ。 デフォルト値: 256 単位:MB。 |
| ||
max_batch_row_count | MaxCompute Storage APIを使用してデータを読み取るときに、1つのスプリットに含めることができる行の最大数。 デフォルト値: 1024。 |
| ||
page_batch_size | MaxCompute Storage APIを使用してデータを読み取るときに、各ページに含めることができる行の最大数。 デフォルト値: 1024。 |
| ||
max_allocation_per_split | MaxCompute Storage APIを使用してデータを読み取るときに分割レベルで割り当てることができる最大ピークメモリ。 デフォルト値は 300 です。 単位:MB。 |
| ||
async_get_split | MaxComputeが実行プランを生成するときに、スプリットローディングパフォーマンスを最適化して、タスクを実行用キューに非同期に送信するかどうかを指定します。 有効な値:
説明 このパラメーターは、V3.1.10.1以降のAnalyticDB for MySQLクラスターでのみサポートされます。 |
| ||
スプリットフロー制御 | SPLIT_FLOW_CONTROL_ENABLED | 分割フロー制御機能を有効にするかどうかを指定します。 AnalyticDB for MySQLでは、ノードの同時分割スキャンのクォータを設定して、過剰な同時分割スキャンとリソース使用によって引き起こされるノードの不安定性を回避できます。 有効な値:
|
| |
MIN_RUNNING_SPLITS_LIMIT_PER_TASK | タスク内の同時分割スキャンの最小クォータ。 デフォルト値は 1 です。 有効な値の範囲は、 |
| ||
TARGET_RUNNING_SPLITS_LIMIT_PER_TASK | タスクの同時分割スキャンの中間クォータ。 実際のクォータは、このパラメーターの値に基づいて動的に増減されます。 デフォルト値: 32。 有効な値は、 |
| ||
MAX_RUNNING_SPLITS_LIMIT_PER_TASK | タスクの同時分割スキャンの最大クォータ。 デフォルト値: 64。 このパラメーターの値は、 |
| ||
その他 | resource_group | クエリで使用されるリソースグループ。 リソースグループを指定しない場合、データベースアカウントに関連付けられているリソースグループが使用されます。 データベースアカウントがリソースグループに関連付けられていない場合、デフォルトのリソースグループが使用されます。 |
| なし |
dml_exception_to_null_enabled | INSERT SELECTステートメントによって書き込まれたデータに無効な値が含まれている場合、例外をスローせずにNULL値を書き込むかどうかを指定します。 有効な値:
|
| ||
display_hint | クエリを実行するユーザーを指定する文字列など、クエリの識別子。 |
|