AnalyticDB for MySQL では、パラメーターを設定する方法が 2 つあります:
-
SET ADB_CONFIG KEY=VALUE— クラスター全体 (グローバルスコープ) に設定を適用します。 -
ヒント (
/*+ KEY=VALUE*/) — 単一の SQL ステートメントにのみ設定を適用します。
両方の方法で同じパラメーターを設定した場合、ヒントが優先されます。
Milvus クラスターのバージョン 3.2.5 以降、システムが設定タイプを検証します。
一般的な設定パラメーター
クラスターのマイナーバージョンを表示および更新するには、[AnalyticDB for MySQL コンソール] の [クラスター情報] ページの [設定情報] セクションに移動します。
切り替えウィンドウ
REPLICATION_SWITCH_TIME_RANGE
クラスターのスケールアウト時における切り替えの時間枠を指定します。切り替え中、古いクラスターは 5〜10 分間、読み取り専用でトラフィックを処理します。古いクラスターに接続した後、古いクラスターでこのパラメーターを設定します。
時間枠を設定しない場合、古いクラスターからの増分データがすべて新しいクラスターに同期された後、クラスターは自動的に切り替わります。
構文:
SET ADB_CONFIG REPLICATION_SWITCH_TIME_RANGE=`23:00, 23:30`;
クエリ制限
MAX_IN_ITEMS_COUNT
IN 条件で使用できる値の最大数を設定します。正の整数である必要があります。
| クラスター バージョン | デフォルト |
|---|---|
| 3.1.8 以前 | 2000 |
| 3.1.9.x ~ 3.1.10.x | 4000 |
| 3.2.1 以降 | 20000 |
構文:
SET ADB_CONFIG MAX_IN_ITEMS_COUNT=4000;
関連情報: 書き込みとクエリ
MAX_SELECT_ITEMS_COUNT
SELECT ステートメントの列数の上限を設定します。デフォルト値:1024。このパラメーターを増やすと、クラスターの安定性に影響する可能性があります。ご自身で調整しないことを推奨します。
構文:
SET ADB_CONFIG MAX_SELECT_ITEMS_COUNT=1000;
関連情報: 書き込みとクエリ
QUERY_TIMEOUT
クエリ実行フェーズのタイムアウトを設定します。デフォルト値:1800000 ms (30 分)。
このパラメーターは SQL ステートメントの実行タイムアウトのみを制御し、接続タイムアウトやセッションのアイドルタイムアウトには影響しません。
構文:
SET ADB_CONFIG QUERY_TIMEOUT=1000;
INSERT_SELECT_TIMEOUT
クラスター レベルで、INSERT、UPDATE、DELETE ステートメントの最大実行時間を設定します。
-
デフォルト: 24×3600000 ms
-
正の整数である必要があります。単位:ミリ秒 (ms)。
構文:
SET ADB_CONFIG INSERT_SELECT_TIMEOUT=3600000;
関連情報: 制限
述語プッシュダウン
FILTER_NOT_PUSHDOWN_COLUMNS / NO_INDEX_COLUMNS
クラスター レベルで、特定の列に対する述語プッシュダウンを無効化します。パラメーター名はクラスター バージョンによって異なります:
| クラスター バージョン | パラメーター |
|---|---|
| 3.1.4 以降 | FILTER_NOT_PUSHDOWN_COLUMNS |
| 3.1.4 より前 | NO_INDEX_COLUMNS |
構文:
-- クラスター バージョン 3.1.4 以降
SET ADB_CONFIG FILTER_NOT_PUSHDOWN_COLUMNS=[Schema1.tableName1:colName1|colName2;Schema2.tableName2:colName1|colName2];
-- クラスター バージョン 3.1.4 より前
SET ADB_CONFIG NO_INDEX_COLUMNS=[tableName1.colName1;colName2,tableName2.colName1];
関連情報: プッシュダウンなしのフィルター条件
クエリ実行モード
QUERY_TYPE
クラスターのクエリ実行モードを切り替えます。
-
有効な値:
interactive、batch
このパラメーターは、予約モードの Data Warehouse Edition クラスター、および Enterprise Edition、Basic Edition、Data Lakehouse Edition クラスターでは使用できません。
構文:
SET ADB_CONFIG QUERY_TYPE=interactive;
関連情報: クエリ実行モード
クエリキューの同時実行性
これらのパラメーターは、フロントエンド ノードごとに、優先度レベル別の最大同時実行性とキューの深さを制御します。
| パラメーター | キュー | デフォルト | 説明 |
|---|---|---|---|
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 | 最大同時実行クエリ数。この上限を超えると、新しいクエリはキューに入ります。キューの上限にも達した場合、システムは "Too many queued queries" エラーを返します。この値を増やすか、カスタムリソースグループを作成して負荷を分散できます。 |
XIHE_ENV_QUERY_NORMAL_MAX_QUEUED_SIZE |
NORMAL | 200 | 最大キューイング クエリ数 |
XIHE_ENV_QUERY_HIGH_MAX_CONCURRENT_SIZE |
HIGH | 40 | 最大同時実行クエリ数 |
XIHE_ENV_QUERY_HIGH_MAX_QUEUED_SIZE |
HIGH | 400 | 最大キューイング クエリ数 |
構文:
SET ADB_CONFIG XIHE_ENV_QUERY_NORMAL_MAX_CONCURRENT_SIZE=20;
SET ADB_CONFIG XIHE_ENV_QUERY_NORMAL_MAX_QUEUED_SIZE=200;
XIHE BSP ジョブ設定
BSP (Bulk Synchronous Parallel) ジョブは XIHE エンジンで実行されます。次のパラメーターは、優先度、リソース制限、タイムアウトを制御します。
QUERY_PRIORITY
BSP ジョブのスケジューリング優先度を設定します。
-
有効な値:
HIGH、NORMAL、LOW、LOWEST -
デフォルト:
NORMAL
構文:
SET ADB_CONFIG QUERY_PRIORITY=HIGH;
関連情報: 設定項目リスト
ELASTIC_JOB_MAX_ACU
1 つの BSP ジョブが使用できる ACU (AnalyticDB Compute Units) の最大数を設定します。
-
デフォルト: 9
-
最小: 3
-
有効な範囲: [3、ジョブタイプのリソースグループの最大 ACU]
構文:
SET ADB_CONFIG ELASTIC_JOB_MAX_ACU=20;
BATCH_QUERY_TIMEOUT
BSP ジョブのタイムアウトを設定します。正の整数である必要があります。単位:ミリ秒 (ms)。
-
デフォルト: 7200000 ms
構文:
SET ADB_CONFIG BATCH_QUERY_TIMEOUT=3600000;
外部テーブルのインポート
HIVE_SPLIT_ASYNC_GENERATION_ENABLED
実行計画の生成時に、Hive がスプリットタスクを非同期でキューに送信するかどうかを制御します。
-
有効な値:
true、false -
デフォルト:
false
クラスター バージョン 3.1.10.1 以降が必要です。
構文:
SET ADB_CONFIG HIVE_SPLIT_ASYNC_GENERATION_ENABLED=true;
SQL_OUTPUT_BATCH_SIZE
MaxCompute 外部テーブルからデータをインポートする際に、バッチあたりの行数を設定します。正の整数である必要があります。
構文:
SET ADB_CONFIG SQL_OUTPUT_BATCH_SIZE=6000;
関連情報: インポートとエクスポート
ENABLE_ODPS_MULTI_PARTITION_PART_MATCH
クエリ実行前に、システムが MaxCompute パーティションを事前に走査し、各パーティションのレコード数を取得するかどうかを制御します。
-
有効な値:
true、false
構文:
SET ADB_CONFIG ENABLE_ODPS_MULTI_PARTITION_PART_MATCH=false;
ASYNC_GET_SPLIT
実行計画の生成時に、MaxCompute がスプリットロードタスクを非同期でキューに送信するかどうかを制御します。
-
有効な値:
true、false -
デフォルト:
false
クラスター バージョン 3.1.10.1 以降が必要です。
構文:
SET ADB_CONFIG ASYNC_GET_SPLIT=true;
BUILD ジョブのスケジューリング
RC_CSTORE_BUILD_SCHEDULE_PERIOD
BUILD タスクをスケジュールできる (実行ではない) 時間帯を制限します。値は 0~24 の整数である必要があります。
構文:
SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD=`6,8`;
関連情報: 自動 BUILD スケジューリング時間を設定する
RC_BUILD_TASK_PRIORITY_LIST
1 つ以上のテーブルの BUILD ジョブのスケジューリング優先度を設定します。この優先度は、新しい値が設定されるまで有効です。
-
優先度は
task_priorityパラメーターで制御されます。整数である必要があります。 -
デフォルト: 0
構文:
SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST=`<db1_name>.<table1_name>.<task_priority>;<db2_name>.<table2_name>.<task_priority>`;
関連情報: BUILD
エラスティックインポート
RC_ELASTIC_JOB_SCHEDULER_ENABLE
エラスティックインポート機能を手動で有効化します。
構文:
SET ADB_CONFIG RC_ELASTIC_JOB_SCHEDULER_ENABLE=true;
関連情報:
REMOTE_CALL 関数
REMOTE_CALL 関数を使用して Function Compute のユーザー定義関数 (UDF) を呼び出す際は、これらのパラメーターを使用します。5 つのパラメーターはすべてクラスター レベルで設定されます。
| パラメーター | 説明 | 例 |
|---|---|---|
XIHE_REMOTE_CALL_SERVER_ENDPOINT |
Function Compute サービスの内部サービスエンドポイントです。サービスエンドポイントをご参照ください。 | SET ADB_CONFIG XIHE_REMOTE_CALL_SERVER_ENDPOINT="1234567890000****.cn-zhangjiakou-internal.fc.aliyuncs.com" |
XIHE_REMOTE_CALL_SERVER_AK |
Function Compute サービスを所有する Alibaba Cloud アカウントまたは Resource Access Management (RAM) ユーザーの AccessKey ID です。 | SET ADB_CONFIG XIHE_REMOTE_CALL_SERVER_AK=************; |
XIHE_REMOTE_CALL_SERVER_SK |
Function Compute サービスを所有する Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey シークレットです。 | SET ADB_CONFIG XIHE_REMOTE_CALL_SERVER_SK=************; |
XIHE_REMOTE_CALL_COMPRESS_ENABLED |
Function Compute に送信する前に、データを GZIP 形式で圧縮するかどうかを指定します。 | SET ADB_CONFIG XIHE_REMOTE_CALL_COMPRESS_ENABLED=true; |
XIHE_REMOTE_CALL_MAX_BATCH_SIZE |
1 バッチあたりに Function Compute に送信するデータ行数です。デフォルト:500000。 | SET ADB_CONFIG XIHE_REMOTE_CALL_MAX_BATCH_SIZE=500000; |
関連情報: ユーザー定義関数 (UDF)
スキャン同時実行制御
これらのパラメーターは、過剰なリソース消費によるノードの不安定化を防ぐために、同時に実行できるスキャンタスク数を制御します。
SPLIT_FLOW_CONTROL_ENABLED
クラスター レベルでスキャン同時実行制御を有効または無効にします。
-
有効な値:
true、false -
デフォルト:
true
構文:
SET ADB_CONFIG SPLIT_FLOW_CONTROL_ENABLED=true;
関連情報: スキャン同時実行制御
NODE_LEVEL_SPLIT_FLOW_CONTROL_ENABLED
ノード全体のスキャン同時実行クォータに基づいて、タスクごとのスキャン同時実行性を動的に調整できるようにします。
-
有効な値:
true、false -
デフォルト:
false
構文:
SET ADB_CONFIG NODE_LEVEL_SPLIT_FLOW_CONTROL_ENABLED=true;
スキャン同時実行クォータ
| パラメーター | 説明 | デフォルト |
|---|---|---|
MIN_RUNNING_SPLITS_LIMIT_PER_TASK |
タスクあたりの最小スキャン同時実行数。有効な範囲:[1、TARGET_RUNNING_SPLITS_LIMIT_PER_TASK]。 |
1 |
TARGET_RUNNING_SPLITS_LIMIT_PER_TASK |
タスクあたりの中間スキャン同時実行数。クォータはこの値を基準に増減します。有効な範囲:[MIN_RUNNING_SPLITS_LIMIT_PER_TASK、MAX_RUNNING_SPLITS_LIMIT_PER_TASK]。 |
32 |
MAX_RUNNING_SPLITS_LIMIT_PER_TASK |
タスクあたりの最大スキャン同時実行数。TARGET_RUNNING_SPLITS_LIMIT_PER_TASK より大きい値である必要があります。 |
64 |
WORKER_MAX_RUNNING_SOURCE_SPLITS_PER_NODE |
ストレージノードのスキャン同時実行クォータです。デフォルト値は変更しないでください。値が不適切だとクラスターのパフォーマンスが低下します。 | 256 |
EXECUTOR_MAX_RUNNING_SOURCE_SPLITS_PER_NODE |
コンピュートノードのスキャン同時実行クォータです。デフォルト値は変更しないでください。値が不適切だとクラスターのパフォーマンスが低下します。 | 256 |
構文:
SET ADB_CONFIG MIN_RUNNING_SPLITS_LIMIT_PER_TASK=24;
SET ADB_CONFIG TARGET_RUNNING_SPLITS_LIMIT_PER_TASK=32;
SET ADB_CONFIG MAX_RUNNING_SPLITS_LIMIT_PER_TASK=128;
論理ビュー
VIEW_OUTPUT_NAME_CASE_SENSITIVE
論理ビューにおける列名の照合時に、大文字と小文字を区別するかどうかを制御します。
-
有効な値:
true(大文字と小文字を区別)、false(大文字と小文字を区別しない) -
デフォルト:
false
構文:
SET ADB_CONFIG VIEW_OUTPUT_NAME_CASE_SENSITIVE=true;
関連情報: CREATE VIEW
複数ステートメント
ALLOW_MULTI_QUERIES
複数ステートメント機能を使用して、1 回のリクエストで複数の SQL ステートメントを実行可能にします。使用する前に手動で有効化する必要があります。
-
有効な値:
true、false -
デフォルト:
false
構文:
SET ADB_CONFIG ALLOW_MULTI_QUERIES=true;
関連情報: 複数ステートメント
バイナリロギング
BINLOG_ENABLE
クラスター レベルでバイナリロギングを有効化します。
-
クラスター バージョンが 3.2.0.0 より前の場合:個々のテーブルでバイナリロギングを有効にする前に、このパラメーターを手動で有効化してください。
-
クラスター バージョンが 3.2.0.0 以降の場合:バイナリロギングはデフォルトで有効です。このパラメーターは不要です。
構文:
SET ADB_CONFIG BINLOG_ENABLE=true;
関連情報: マテリアライズドビューを更新する
ページングキャッシュ
ページングキャッシュは、中間結果をキャッシュすることで、深いページングを伴うクエリのパフォーマンスを最適化します。
| パラメーター | 説明 | デフォルト |
|---|---|---|
PAGING_CACHE_SCHEMA |
一時キャッシュテーブルを格納するデータベースです。設定しない場合、現在接続しているデータベースが使用されます。 | — |
PAGING_CACHE_MAX_TABLE_COUNT |
一時キャッシュテーブルの最大数です。この上限に達すると、新しいキャッシュの作成に失敗します。正の整数である必要があります。 | 100 |
PAGING_CACHE_EXPIRATION_TIME |
キャッシュの TTL (Time-To-Live) を秒単位で指定します。システムは、この期間内にアクセスされなかったキャッシュをクリアします。正の整数である必要があります。 | 600 |
PAGING_CACHE_ENABLE |
ページングキャッシュ機能をグローバルに有効または無効にします。 | true |
構文:
SET ADB_CONFIG PAGING_CACHE_SCHEMA=paging_cache;
SET ADB_CONFIG PAGING_CACHE_MAX_TABLE_COUNT=100;
SET ADB_CONFIG PAGING_CACHE_EXPIRATION_TIME=600;
SET ADB_CONFIG PAGING_CACHE_ENABLE=false;
関連情報: ページングキャッシュ
テーブルエンジン
RC_DDL_ENGINE_REWRITE_XUANWUV2
クラスター レベルで、新規作成されるテーブルのデフォルトのテーブルエンジンを設定します。
| 値 | 動作 |
|---|---|
true (デフォルト) |
新規テーブルは XUANWU_V2 を使用します。ENGINE=XUANWU を明示的に指定した場合は、自動的に XUANWU_V2 に書き換えられます。既存のテーブルには影響しません。 |
false |
新規テーブルは XUANWU を使用します。既存のテーブルには影響しません。 |
構文:
SET ADB_CONFIG RC_DDL_ENGINE_REWRITE_XUANWUV2=true;
[関連情報:] テーブルエンジンを指定する
一般的なヒント
ヒントは、指定された SQL ステートメントにのみ適用され、グローバル設定には影響しません。ステートメントの直前に、/*+ KEY=VALUE*/ の構文を使用します。
クエリ制限
QUERY_TIMEOUT
単一クエリのクエリタイムアウトを設定します。正の整数である必要があります。単位はミリ秒 (ms) です。
構文:
/*+ QUERY_TIMEOUT=1000 */ SELECT COUNT(*) FROM t;
関連情報: 書き込みとクエリ
INSERT_SELECT_TIMEOUT
単一クエリにおける INSERT、UPDATE、DELETE ステートメントの最大実行時間を設定します (これには INSERT ... SELECT 形式が含まれます)。
-
デフォルト: 24 × 3600000 ms
-
正の整数である必要があります。単位はミリ秒 (ms) です。
構文:
/*+ INSERT_SELECT_TIMEOUT=3600000 */ UPDATE customer SET customer_name='adb' WHERE customer_id='2369';
関連情報: 制限
MAX_SELECT_ITEMS_COUNT
SELECT 句で許可される列数の上限を設定します。
-
デフォルト: 1024
-
正の整数である必要があります。
構文:
/*+ MAX_SELECT_ITEMS_COUNT=2048*/
MAX_IN_ITEMS_COUNT
単一クエリにおける IN 条件で許可される値の最大数を設定します。
-
デフォルト: 4000
-
正の整数である必要があります。
構文:
/*+ MAX_IN_ITEMS_COUNT=1000*/
MAX_WHERE_ITEMS_COUNT
WHERE 句で許可される条件数の上限を設定します。
-
デフォルト: 256
-
正の整数である必要があります。
構文:
/*+ MAX_WHERE_ITEMS_COUNT=512*/
QUERY_MAX_SHUFFLE_DATA_SIZE_MB
クエリのシャッフルデータ量の上限を設定します。クエリがこのしきい値を超えると、システムはクエリをエラーで終了させます。デフォルトでは、制限は適用されません。正の整数である必要があります。単位は MB です。
構文:
/*+ QUERY_MAX_SHUFFLE_DATA_SIZE_MB=1024*/
述語プッシュダウン
FILTER_NOT_PUSHDOWN_COLUMNS / NO_INDEX_COLUMNS
クエリレベルで、特定のカラムに対する述語プッシュダウンを無効化します。パラメーター名はクラスターバージョンによって異なります。
| クラスターバージョン | パラメーター |
|---|---|
| 3.1.4 以降 | FILTER_NOT_PUSHDOWN_COLUMNS |
| 3.1.4 より前 | NO_INDEX_COLUMNS |
構文
-- クラスターバージョン 3.1.4 以降
/*+ FILTER_NOT_PUSHDOWN_COLUMNS=[Schema1.table1:colName1|colName2;Schema2.table2:colName1|colName2] */
-- 3.1.4 より前
/*+ NO_INDEX_COLUMNS=[tableName1.colName1;colName2,tableName2.colName1] */
関連項目: プッシュダウンされないフィルター条件
BUILD ジョブスケジューリング
BUILD_TASK_PRIORITY
単一のテーブルに対する BUILD タスクのスケジューリング優先度を設定します。値が大きいほど優先度が高くなります。
-
デフォルト: 0
-
0 以上の整数である必要があります。
このヒントでは、一度に 1 つのテーブルの優先度のみ設定できます。複数のテーブルの優先度を設定するには、代わりにRC_BUILD_TASK_PRIORITY_LIST 設定パラメーターを使用してください。
構文:
/*+ BUILD_TASK_PRIORITY=2 */ BUILD TABLE db.table;
関連情報: BUILD スケジューリング優先度の設定
エラスティックインポート
ELASTIC_LOAD および ELASTIC_LOAD_CONFIGS
エラスティックインポートを有効化し、インポートタスクの実行に使用するジョブリソースグループを指定します。
構文:
/*+ ELASTIC_LOAD=true, ELASTIC_LOAD_CONFIGS=[adb.load.resource.group.name=resource_group]*/
SUBMIT JOB INSERT OVERWRITE INTO adb_demo.adb_import_test SELECT * FROM adb_external_db.person;
関連情報:
実行計画の調整
O_CBO_RULE_SWAP_OUTER_JOIN / LEFT_TO_RIGHT_ENABLED
右テーブルが大きい場合に、左結合を右結合に変換するようオプティマイザに指示することで、メモリ消費量を削減します。パラメーター名はクラスターバージョンによって異なります:
| クラスターバージョン | パラメーター |
|---|---|
| 3.1.8 以降 | O_CBO_RULE_SWAP_OUTER_JOIN |
| 3.1.8 より前 | LEFT_TO_RIGHT_ENABLED |
-
有効な値:
true、false -
デフォルト:
false
構文:
/*+ O_CBO_RULE_SWAP_OUTER_JOIN=true*/
/*+ LEFT_TO_RIGHT_ENABLED=true*/
REORDER_JOINS
結合順序の自動調整を制御します。無効にすると、クエリは SQL ステートメントに記述された結合順序で実行されます。
-
有効な値:
true、false -
デフォルト:
true
構文:
/*+ REORDER_JOINS=false*/
関連情報: 結合順序を手動で調整する
AGGREGATION_PATH_TYPE
オプティマイザが部分集約をスキップして最終集約に直接移行するかどうかを制御します。 GROUP BY クエリのグループ数が多く、部分集約で過剰なリソースを消費する場合に有用です。
-
有効な値:
single_agg(部分集約をスキップ)、auto(オプティマイザが判断) -
デフォルト:
auto
構文:
/*+ AGGREGATION_PATH_TYPE=single_agg*/
関連情報: グループ化と集約クエリの最適化
ランタイムポリシー
HASH_PARTITION_COUNT
コンピューティングオペレーションの同時タスク数を設定します。正の整数である必要があります。
-
デフォルト: 32
構文:
/*+ HASH_PARTITION_COUNT=32*/
TASK_WRITER_COUNT
INSERT INTO SELECT インポートタスクの書き込みの同時実行数を設定します。ワーカーの負荷が高すぎる場合は、この値を減らしてください。正の整数である必要があります。
-
デフォルト: 16
構文:
/*+ TASK_WRITER_COUNT=8*/
CTE_EXECUTION_MODE
複数回参照される共通テーブル式 (CTE) のサブクエリを、1 回だけ実行する (共有モード) か、参照されるたびに実行する (インラインモード) かを制御します。
-
有効な値:
shared(1 回実行)、inline(参照ごとに実行) -
デフォルト:
inline
構文:
/*+ CTE_EXECUTION_MODE=shared*/
関連項目: WITH
XIHE BSP ジョブ設定
QUERY_PRIORITY
クエリレベルで BSP ジョブのスケジューリング優先度を設定します。
-
有効な値:
HIGH、NORMAL、LOW、LOWEST -
デフォルト:
NORMAL
構文:
/*+ QUERY_PRIORITY=HIGH*/
参照: 設定項目一覧
ELASTIC_JOB_MAX_ACU
クエリレベルで単一の BSP ジョブが使用できる ACU の最大数を設定します。
-
デフォルト: 9
-
最小値: 3
-
有効な範囲: [3, ジョブタイプのリソースグループの最大 ACU]
構文:
/*+ ELASTIC_JOB_MAX_ACU=20*/
BATCH_QUERY_TIMEOUT
クエリレベルで BSP ジョブのタイムアウトを設定します。値は正の整数で、単位はミリ秒 (ms) です。
-
デフォルト: 7200000 ms
構文:
/*+ BATCH_QUERY_TIMEOUT=3600000*/
OSS 外部テーブル
OUTPUT_FILENAME
OSS 外部テーブルにデータをエクスポートする際のファイル名をカスタマイズします。エクスポート文の直前にこのヒントを追加します。
構文:
/*+ OUTPUT_FILENAME=output.csv*/
関連項目: OSS へのエクスポート
SQL_OUTPUT_OSS_FILE_HEAD_ENABLE
エクスポートした OSS ファイルに列名を含めるかどうかを設定します。デフォルトでは、エクスポートされたファイルにはデータのみが含まれます。
-
有効な値:
true、false -
デフォルト:
false
構文:
/*+ SQL_OUTPUT_OSS_FILE_HEAD_ENABLE=true*/
HIVE_SPLIT_ASYNC_GENERATION_ENABLED
実行計画の生成時に、Hive がスプリットタスクを非同期で送信するかどうかを設定します。
-
有効な値:
true、false -
デフォルト:
false
クラスターバージョン 3.1.10.1 以降が必要です。
構文:
/*+ HIVE_SPLIT_ASYNC_GENERATION_ENABLED=true*/
FAST_PARQUET_READER_ENABLE
高速な Parquet リーダーを有効にします。Parquet ファイルの統計情報が不正確な場合、ネイティブ Parquet リーダーにフォールバックします。
-
有効な値:
true、false -
デフォルト:
true
構文:
/*+ FAST_PARQUET_READER_ENABLE=true*/
OSS_VECTORIZED_PARQUET_READER_ENABLE
NULL 値を含まないデータに対して、ベクトル化された Parquet 読み取りを有効にします。
-
有効な値:
true、false -
デフォルト:
false
構文:
/*+ OSS_VECTORIZED_PARQUET_READER_ENABLE=true*/
OSS_VECTORIZED_PARQUET_READER_NULL_SCENE_ENABLE
NULL 値を含むデータに対して、ベクトル化された Parquet 読み取りを有効にします。
-
有効な値:
true、false -
デフォルト:
false
構文:
/*+ OSS_VECTORIZED_PARQUET_READER_NULL_SCENE_ENABLE=true*/
Hudi 外部テーブル
HUDI_METADATA_TABLE_ENABLED
Hudi テーブルのクエリ時に Hudi メタデータをロードするかどうかを設定します。
-
有効な値:
true、false -
デフォルト:
false
構文:
/*+ HUDI_METADATA_TABLE_ENABLED=true*/
HUDI_QUERY_TYPE
Hudi テーブルのクエリメソッドを設定します。
| 値 | 説明 |
|---|---|
read_optimized (デフォルト) |
最新のコンパクションまたはコミットからデータを返します。 |
snapshot |
特定の時点までにコミットまたはコンパクションしたすべてのデータを返します。 |
構文:
/*+ HUDI_QUERY_TYPE=snapshot*/
HUDI_REALTIME_SKIP_MERGE
スナップショットクエリモードでは、ベースファイルとログファイルのレコードのマージをスキップするかどうかを設定します。
-
有効な値:
true、false -
デフォルト:
false
構文:
/*+ HUDI_REALTIME_SKIP_MERGE=true*/
Hudi スプリットとパフォーマンス設定
| パラメーター | 説明 | デフォルト |
|---|---|---|
HUDI_MAX_SPLIT_SIZE |
最大スプリットサイズです。単位は MB です。 | 128 |
HUDI_SPLIT_PARALLEL_GENERATION_ENABLED |
スプリットを並列で生成するかどうかを指定します。 | true |
HUDI_DATA_SKIPPING_ENABLED |
Hudi MetaTable の統計情報を使用して、読み取り中に不要なシャードをスキップし、クエリパフォーマンスを向上させます。 | false |
HUDI_SPLIT_ASYNC_GENERATION_ENABLED |
実行計画の生成中に Hudi スプリットを非同期で生成するかどうかを指定します。 | true |
構文:
/*+ HUDI_MAX_SPLIT_SIZE=128*/
/*+ HUDI_SPLIT_PARALLEL_GENERATION_ENABLED=true*/
/*+ HUDI_DATA_SKIPPING_ENABLED=true*/
/*+ HUDI_SPLIT_ASYNC_GENERATION_ENABLED=true*/
ApsaraDB RDS for MySQL 外部テーブル
JDBC_SCAN_SPLITS
Java Database Connectivity (JDBC) ベースのテーブルスキャンにおけるスプリット数を設定します。
-
デフォルト: 1
-
有効範囲: 1–100
構文:
/*+ JDBC_SCAN_SPLITS=1*/
JDBC_SPLIT_COLUMN
ApsaraDB RDS for MySQL 外部テーブルを読み取る際に、データのスプリットに使用する列を指定します。
構文:
/*+ JDBC_SPLIT_COLUMN=column1*/
JDBC_INSERT_DIRECTLY
データを最初に一時テーブルにステージングするのではなく、ターゲットテーブルに直接書き込みます。直接書き込みは高速ですが、エラーが発生した場合にターゲットテーブルにダーティデータを残す可能性があります。
-
有効値:
true、false -
デフォルト:
false
構文:
/*+ JDBC_INSERT_DIRECTLY=true*/
Tablestore 外部テーブル
OTS-INSERT-AS-UPDATE
Tablestore 外部テーブルに書き込む際に、UPDATE ステートメントの代わりに INSERT ステートメントを使用します。
-
有効な値:
true、false -
デフォルト:
false
構文:
/*+ OTS-INSERT-AS-UPDATE=true*/
関連情報: Tablestore データのクエリとインポート
MaxCompute 外部テーブル
ODPS_SPLIT_LIMIT
Tunnel 経由で MaxCompute データを読み取る際のスプリット数の上限を設定します。
-
デフォルト: 1000
-
有効範囲: 1~1000
構文:
/*+ ODPS_SPLIT_LIMIT=1000*/
IGNORE_PARTITION_CACHE
キャッシュされたメタデータを使用せずに、MaxCompute テーブルからパーティションのメタデータを直接クエリします。キャッシュが作成された後にパーティションデータが変更された場合に有用です。
-
有効な値:
true、false -
デフォルト:
false
構文:
/*+ IGNORE_PARTITION_CACHE=true*/
ROWS_PER_SPLIT
Tunnel 経由で単一のスプリットが読み取れる行数の上限を設定します。
-
デフォルト: 500000
-
有効範囲: 10000~500000
構文:
/*+ ROWS_PER_SPLIT=500000*/
STORAGE_API_ENABLED
Tunnel の代わりに MaxCompute ストレージ API を使用して MaxCompute データを読み取ります。ストレージ API は読み取りパフォーマンスを大幅に向上させます。
-
有効な値:
true、false -
デフォルト:
false
構文:
/*+ STORAGE_API_ENABLED=true*/
MaxCompute ストレージ API のスプリット設定
以下のパラメーターはすべて、MaxCompute ストレージ API 経由でデータを読み取る場合に適用されます。
| パラメーター | 説明 | デフォルト |
|---|---|---|
SPLIT_BYTE_SIZE |
単一スプリットの最大サイズ。単位:MB。 | 256 |
MAX_BATCH_ROW_COUNT |
単一スプリットに含まれる行数の上限。 | 1024 |
PAGE_BATCH_SIZE |
ページあたりの行数の上限。 | 1024 |
MAX_ALLOCATION_PER_SPLIT |
スプリットレベルで割り当てるピークメモリの上限。単位:MB。 | 300 |
ASYNC_GET_SPLIT |
スプリットロードタスクを非同期で送信するかどうかを指定します。クラスターバージョン 3.1.10.1 以降が必要です。 | false |
構文:
/*+ SPLIT_BYTE_SIZE=256*/
/*+ MAX_BATCH_ROW_COUNT=1024*/
/*+ PAGE_BATCH_SIZE=1024*/
/*+ MAX_ALLOCATION_PER_SPLIT=300*/
/*+ ASYNC_GET_SPLIT=true*/
スキャンの同時実行制御
SPLIT_FLOW_CONTROL_ENABLED
クエリレベルでスキャンの同時実行制御を有効または無効にします。
-
有効な値:
true(有効)、false(無効) -
デフォルト:
true
構文:
/*+ SPLIT_FLOW_CONTROL_ENABLED=true*/ SELECT * FROM table;
参照: スキャンの同時実行制御
スキャン同時実行数クォータ (クエリレベル)
| パラメーター | 説明 | デフォルト | 例 |
|---|---|---|---|
MIN_RUNNING_SPLITS_LIMIT_PER_TASK |
タスクごとの最小同時実行スプリット数。有効範囲: [1, TARGET_RUNNING_SPLITS_LIMIT_PER_TASK]。 |
1 | /*+ MIN_RUNNING_SPLITS_LIMIT_PER_TASK=10*/ SELECT * FROM orders; |
TARGET_RUNNING_SPLITS_LIMIT_PER_TASK |
タスクごとの目標同時実行スプリット数。有効範囲: [MIN_RUNNING_SPLITS_LIMIT_PER_TASK, MAX_RUNNING_SPLITS_LIMIT_PER_TASK]。 |
32 | /*+ TARGET_RUNNING_SPLITS_LIMIT_PER_TASK=32*/ SELECT * FROM adb_test; |
MAX_RUNNING_SPLITS_LIMIT_PER_TASK |
タスクごとの最大同時実行スプリット数。TARGET_RUNNING_SPLITS_LIMIT_PER_TASK 以上である必要があります。 |
64 | /*+ MAX_RUNNING_SPLITS_LIMIT_PER_TASK=100*/ SELECT * FROM adb_test; |
ページングキャッシュ
PAGING_ID
ページングキャッシュを有効にし、手動で paging_id を指定して、関連するページングされたクエリ (LIMIT と OFFSET の値のみが異なる同じパターンのクエリ) をグループ化します。
構文:
/*PAGING_ID=paging123*/ SELECT * FROM t_order ORDER BY id LIMIT 0, 100;
ご参照: ページングキャッシュ
PAGING_CACHE_ENABLED
ページングキャッシュを有効にし、SQL パターンに基づいて paging_id を自動的に生成します。
-
有効な値:
true、false -
デフォルト:
false
構文:
/*PAGING_CACHE_ENABLED=true*/ SELECT * FROM t_order ORDER BY id LIMIT 0, 100;
PAGING_CACHE_VALIDITY_INTERVAL
キャッシュ有効期間を秒単位で設定します。この期間が過ぎると、キャッシュは期限切れになります。期限切れから 1 時間以内にキャッシュにアクセスがない場合、システムは対応する一時テーブルを削除します。値は正の整数である必要があります。PAGING_CACHE_ENABLED と一緒に使用します。
構文:
/*PAGING_CACHE_ENABLED=true, PAGING_CACHE_VALIDITY_INTERVAL=300*/ SELECT * FROM t_order ORDER BY id LIMIT 0, 100;
INVALIDATE_PAGING_CACHE
指定されたクエリパターンのページングキャッシュを無効化します。PAGING_ID または PAGING_CACHE_ENABLED と一緒に使用します。
-
有効な値:
true、false -
デフォルト:
false
構文:
/*PAGING_CACHE_ENABLED=true, INVALIDATE_PAGING_CACHE=true*/ SELECT * FROM t_order ORDER BY id LIMIT 0, 100;
テーブルエンジン
RC_DDL_ENGINE_REWRITE_XUANWUV2
現在の SQL ステートメントで作成するテーブルのテーブルエンジンを指定します。
| 値 | 動作 |
|---|---|
true (デフォルト) |
新しいテーブルは XUANWU_V2 を使用します。 ENGINE=XUANWU を明示的に指定した場合は、自動的に XUANWU_V2 に書き換えられます。既存のテーブルには影響しません。 |
false |
新しいテーブルは XUANWU を使用します。既存のテーブルには影響しません。 |
構文:
/*+ RC_DDL_ENGINE_REWRITE_XUANWUV2=true */
関連情報: テーブルエンジンの指定
その他のヒント
RESOURCE_GROUP
クエリのリソースグループを指定します。設定されていない場合、データベースアカウントにバインドされているリソースグループが使用されます。アカウントにバインドされているリソースグループがない場合は、デフォルトのリソースグループが使用されます。
構文:
/*+ RESOURCE_GROUP=my_group_name*/
DML_EXCEPTION_TO_NULL_ENABLED
INSERT SELECT ステートメント内の無効な値の処理方法を制御します。
-
有効な値:
true(エラーをスローする代わりに NULL を書き込む)、false(エラーをスローする) -
デフォルト:
false
構文:
/*+ DML_EXCEPTION_TO_NULL_ENABLED=true*/
DISPLAY_HINT
クエリに識別用のラベルを付けます。たとえば、異なる業務チームからのクエリを識別するために使用できます。
構文:
/*+ DISPLAY_HINT=from_user_123*/
よくある質問
設定パラメーターをデフォルト値にリセットする方法
SET ADB_CONFIG REMOVE <key> を実行して設定を削除し、デフォルト値に戻します。
SET ADB_CONFIG REMOVE QUERY_TIMEOUT; -- クエリタイムアウトをデフォルト値に戻します。
パラメーターがリセットされたことを確認するには、次のコマンドを実行します。
SHOW ADB_CONFIG KEY=<key>;