全部產品
Search
文件中心

AnalyticDB:Config和Hint配置參數

更新時間:Jun 24, 2025

AnalyticDB for MySQL支援通過SET命令(文法:SET ADB_CONFIG KEY=VALUE)和Hint(文法:/*+ KEY=VALUE*/)兩種方式配置參數。其中,SET ADB_CONFIG命令用於修改全域配置,修改後,該配置項會作用於整個叢集;使用Hint修改參數後,該Hint僅作用於指定SQL,不影響全域配置。若同時使用SET ADB_CONFIG命令和Hint配置了參數,則優先採用Hint方式配置的參數。本文為您介紹AnalyticDB for MySQL中常見的配置參數。

常用Config參數

類別

參數

描述

樣本

文檔連結

新舊叢集的切換時間

REPLICATION_SWITCH_TIME_RANGE

新舊叢集切換期間,舊叢集會有5~10分鐘的時間僅支援唯讀操作。您可以在串連舊叢集後,配置REPLICATION_SWITCH_TIME_RANGE來指定切換新舊叢集的時間視窗。

說明

如果不配置新舊叢集切換的時間視窗,舊叢集中的增量資料全部即時同步到新叢集後,新舊叢集會自動切換。

SET ADB_CONFIG REPLICATION_SWITCH_TIME_RANGE=`23:00, 23:30`;

數倉版擴縮容

IN條件數限制

MAX_IN_ITEMS_COUNT

設定IN條件的個數限制。取值範圍為大於0的正整數。

  • 核心版本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;

寫入與查詢

查詢逾時時間

QUERY_TIMEOUT

叢集層級為所有查詢配置查詢的逾時時間。取值範圍為大於0的整數。單位:毫秒(ms)。

SET ADB_CONFIG QUERY_TIMEOUT=1000;

INSERT、UPDATE、DELETE逾時時間

INSERT_SELECT_TIMEOUT

叢集層級修改INSERT、UPDATE和DELETE語句的最大執行時間。預設值:24*3600000,取值範圍為大於0的整數。單位:毫秒(ms)。

SET ADB_CONFIG INSERT_SELECT_TIMEOUT=3600000;

使用限制

過濾條件不下推

  • 核心版本為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

說明

數倉版預留模式叢集、企業版、基礎版及湖倉版叢集不支援切換執行個體的查詢執行模式。

SET ADB_CONFIG QUERY_TYPE=interactive;

查詢執行模式

查詢隊列

XIHE_ENV_QUERY_ETL_MAX_CONCURRENT_SIZE

單個前端節點LOWEST隊列的最大可執行查詢數,預設值為20。

SET ADB_CONFIG XIHE_ENV_QUERY_ETL_MAX_CONCURRENT_SIZE=20;

Interactive型資源群組的優先順序隊列與並發

XIHE_ENV_QUERY_ETL_MAX_QUEUED_SIZE

單個前端節點LOWEST隊列的最大可排隊查詢數,預設值為200。

SET ADB_CONFIG XIHE_ENV_QUERY_ETL_MAX_QUEUED_SIZE=200;

XIHE_ENV_QUERY_LOW_PRIORITY_MAX_CONCURRENT_SIZE

單個前端節點LOW隊列的最大可執行查詢數,預設值為20。

SET ADB_CONFIG XIHE_ENV_QUERY_LOW_PRIORITY_MAX_CONCURRENT_SIZE=20;

XIHE_ENV_QUERY_LOW_PRIORITY_MAX_QUEUED_SIZE

單個前端節點LOW隊列的最大可排隊查詢數,預設值為200。

SET ADB_CONFIG XIHE_ENV_QUERY_LOW_PRIORITY_MAX_QUEUED_SIZE=200;

XIHE_ENV_QUERY_NORMAL_MAX_CONCURRENT_SIZE

單個前端節點NORMAL隊列的最大可執行查詢數,預設值為20。

SET ADB_CONFIG XIHE_ENV_QUERY_NORMAL_MAX_CONCURRENT_SIZE=20;

XIHE_ENV_QUERY_NORMAL_MAX_QUEUED_SIZE

單個前端節點NORMAL隊列的最大可排隊查詢數,預設值為200。

SET ADB_CONFIG XIHE_ENV_QUERY_NORMAL_MAX_QUEUED_SIZE=200;

XIHE_ENV_QUERY_HIGH_MAX_CONCURRENT_SIZE

單個前端節點HIGH隊列的最大可執行查詢數,預設值為40。

SET ADB_CONFIG XIHE_ENV_QUERY_HIGH_MAX_CONCURRENT_SIZE=40;

XIHE_ENV_QUERY_HIGH_MAX_QUEUED_SIZE

單個前端節點HIGH隊列的最大可排隊查詢數,預設值為400。

SET ADB_CONFIG XIHE_ENV_QUERY_HIGH_MAX_QUEUED_SIZE=400;

XIHE BSP作業優先順序

QUERY_PRIORITY

BSP作業的優先順序。取值:

  • HIGH

  • NORMAL( 預設值)

  • LOW

  • LOWEST

SET ADB_CONFIG QUERY_PRIORITY=HIGH;

配置項列表

XIHE BSP作業使用的最大ACU數

ELASTIC_JOB_MAX_ACU

單個XIHE BSP作業所使用的最大ACU數。預設值是9,最小值為3,取值範圍

為[3,Job型資源群組最大資源量]。

SET ADB_CONFIG ELASTIC_JOB_MAX_ACU=20;

XIHE BSP作業查詢逾時時間

BATCH_QUERY_TIMEOUT

XIHE BSP作業的逾時時間。預設值是7200000 ms,取值範圍為大於0的整數。單位:毫秒(ms)。

SET ADB_CONFIG BATCH_QUERY_TIMEOUT=3600000 ;

OSS外表匯入

HIVE_SPLIT_ASYNC_GENERATION_ENABLED

Hive產生執行計畫時,是否將Hive Split任務非同步提交到隊列中執行。取值:

  • true:是。

  • false(預設值):否。

說明

僅3.1.10.1及以上版本支援該參數。

SET ADB_CONFIG HIVE_SPLIT_ASYNC_GENERATION_ENABLED=true;

MaxCompute外表匯入

SQL_OUTPUT_BATCH_SIZE

大量匯入資料時的資料條數。取值範圍為大於0的整數。

SET ADB_CONFIG SQL_OUTPUT_BATCH_SIZE = 6000;

匯入與匯出

ENABLE_ODPS_MULTI_PARTITION_PART_MATCH

是否預先遍曆擷取每個MaxCompute分區的記錄數。

SET ADB_CONFIG ENABLE_ODPS_MULTI_PARTITION_PART_MATCH=false;

ASYNC_GET_SPLIT

MaxCompute產生執行計畫時,是否通過最佳化Split載入效能,將任務非同步提交到隊列中執行。取值:

  • true:是。

  • 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自動調度時間

BUILD調度優先順序

ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST

支援對單表或多表配置BUILD調度的優先順序,且優先順序一直生效,直至再次配置該表優先順序時,才會改變。

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函數

XIHE_REMOTE_CALL_SERVER_ENDPOINT

通過REMOTE_CALL函數遠程調用Function Compute服務中自訂的函數時,Function Compute服務的內網服務接入地址。詳細資料,請參見服務接入地址

SET ADB_CONFIG XIHE_REMOTE_CALL_SERVER_ENDPOINT="1234567890000****.cn-zhangjiakou-internal.fc.aliyuncs.com"

自訂函數UDF

XIHE_REMOTE_CALL_SERVER_AK

通過REMOTE_CALL函數遠程調用Function Compute服務中自訂的函數時,Function Compute服務所屬阿里雲帳號或者RAM使用者的AccessKey ID。

SET ADB_CONFIG XIHE_REMOTE_CALL_SERVER_AK=************;

XIHE_REMOTE_CALL_SERVER_SK

通過REMOTE_CALL函數遠程調用Function Compute服務中自訂的函數時,Function Compute服務所屬阿里雲帳號或者RAM使用者的AccessKey Secret。

SET ADB_CONFIG XIHE_REMOTE_CALL_SERVER_SK=************;

XIHE_REMOTE_CALL_COMPRESS_ENABLED

通過REMOTE_CALL函數遠程調用Function Compute服務中自訂的函數時,是否使用GZIP格式壓縮資料再傳輸至Function Compute服務。

SET ADB_CONFIG REMOTE_CALL_COMPRESS_ENABLED=true;

XIHE_REMOTE_CALL_MAX_BATCH_SIZE

通過REMOTE_CALL函數遠程調用Function Compute服務中自訂的函數時,向Function Compute服務發送的資料行數。

SET ADB_CONFIG XIHE_REMOTE_CALL_MAX_BATCH_SIZE=500000;

掃描並發控制

ADB_CONFIG SPLIT_FLOW_CONTROL_ENABLED

AnalyticDB for MySQL支援配置掃描並發額度,避免因查詢的掃描並發過大、佔用過多資源,導致節點不穩定的情況。取值如下:

  • true(預設值):開啟掃描並發控制功能。

  • false:關閉掃描並發控制功能。

SET ADB_CONFIG SPLIT_FLOW_CONTROL_ENABLED=true;

掃描並發控制

ADB_CONFIG NODE_LEVEL_SPLIT_FLOW_CONTROL_ENABLED

AnalyticDB for MySQL支援根據節點整體的掃描並發額度,動態調整Task的掃描並發額度。取值如下:

  • true:開啟動態調整Task掃描並發控制功能。

  • false(預設值):關閉動態調整Task掃描並發控制功能。

SET ADB_CONFIG NODE_LEVEL_SPLIT_FLOW_CONTROL_ENABLED=true;

MIN_RUNNING_SPLITS_LIMIT_PER_TASK

Task掃描並發額度的最小值。預設值為1,取值範圍為[1,TARGET_RUNNING_SPLITS_LIMIT_PER_TASK]。

SET ADB_CONFIG MIN_RUNNING_SPLITS_LIMIT_PER_TASK=24;

TARGET_RUNNING_SPLITS_LIMIT_PER_TASK

Task掃描並發額度的中間值,基於該值增加或降低掃描並發額度。預設值為32,取值範圍為[MIN_RUNNING_SPLITS_LIMIT_PER_TASK,MAX_RUNNING_SPLITS_LIMIT_PER_TASK]。

TARGET_RUNNING_SPLITS_LIMIT_PER_TASK=32;

MAX_RUNNING_SPLITS_LIMIT_PER_TASK

Task掃描並發額度的最大值。預設值為64,取值範圍大於TARGET_RUNNING_SPLITS_LIMIT_PER_TASK值。

SET ADB_CONFIG MAX_RUNNING_SPLITS_LIMIT_PER_TASK=128;

ADB_CONFIG WORKER_MAX_RUNNING_SOURCE_SPLITS_PER_NODE

儲存節點的掃描並發額度預設為256,掃描並發額度過大或過小都會影響叢集效能,建議您不要修改預設值。

SET ADB_CONFIG WORKER_MAX_RUNNING_SOURCE_SPLITS_PER_NODE=256;

ADB_CONFIG EXECUTOR_MAX_RUNNING_SOURCE_SPLITS_PER_NODE

計算節點的掃描並發額度預設為256,掃描並發額度過大或過小都會影響叢集效能,建議您不要修改預設值。

SET ADB_CONFIG EXECUTOR_MAX_RUNNING_SOURCE_SPLITS_PER_NODE=256;

邏輯視圖大小寫敏感

VIEW_OUTPUT_NAME_CASE_SENSITIVE

設定邏輯視圖大小寫敏感。取值如下:

  • true:大小寫敏感。

  • false(預設值):大小寫不敏感。

SET ADB_CONFIG VIEW_OUTPUT_NAME_CASE_SENSITIVE=true;

CREATE VIEW

連續執行多個SQL語句

ALLOW_MULTI_QUERIES

使用Multi-Statement功能連續執行多個SQL語句時,手動開啟Multi-Statement功能。取值如下:

  • true:開啟。

  • false(預設值):關閉。

SET ADB_CONFIG ALLOW_MULTI_QUERIES=true;

Multi-Statement

開啟Binlog

BINLOG_ENABLE

  • 核心版本3.2.0.0之前的叢集,需先手動開啟Binlog特性,才能為表開啟Binlog功能。

  • 核心版本3.2.0.0及之後的叢集,預設已開啟Binlog特性,無需配置該參數。

SET ADB_CONFIG BINLOG_ENABLE=true;

重新整理物化視圖

Paging Cache(深分頁效能最佳化)

PAGING_CACHE_SCHEMA

指定儲存分頁查詢臨時緩衝表的資料庫。若未指定,則使用當前串連的內部資料庫。

SET ADB_CONFIG PAGING_CACHE_SCHEMA=paging_cache;

Paging Cache(深分頁效能最佳化)

PAGING_CACHE_MAX_TABLE_COUNT

設定臨時緩衝表的最大個數限制。超過此數量時建立新的緩衝將失敗。預設值:100,取值範圍為大於0的整數。

SET ADB_CONFIG PAGING_CACHE_MAX_TABLE_COUNT=100;

PAGING_CACHE_EXPIRATION_TIME

指定緩衝的到期時間閾值,自動清理指定時間內未訪問的分頁查詢快取。預設值:600,取值範圍為大於0的整數,單位:秒(s)。

SET ADB_CONFIG PAGING_CACHE_EXPIRATION_TIME=600;

PAGING_CACHE_ENABLE

指定是否全域關閉Paging Cache功能。取值如下:

  • true(預設值):開啟。

  • false:關閉。

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;

指定表引擎

常用Hint

類別

參數

描述

樣本

文檔連結

查詢逾時時間

QUERY_TIMEOUT

查詢層級為單次查詢配置查詢的逾時時間。取值範圍為大於0的整數,單位:毫秒(ms)。

/*+ QUERY_TIMEOUT=1000 */select count(*) from t;

寫入與查詢

INSERT、UPDATE、DELETE逾時時間

INSERT_SELECT_TIMEOUT

查詢層級修改INSERT、UPDATE和DELETE語句的最大執行時間。預設值:24*3600000,取值範圍為大於0的整數,單位:毫秒(ms)。

/*+ INSERT_SELECT_TIMEOUT=3600000 */update customer set customer_name ='adb' where customer_id ='2369';

使用限制

過濾條件不下推

  • 核心版本為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任務調度的優先順序。目前只支援使用Hint對單表配置BUILD調度的優先順序。預設值為0,取值範圍為大於或等於0的整數,數值越大,BUILD任務調度的優先順序越高。

/*+ BUILD_TASK_PRIORITY = 2*/ BUILD TABLE db.table;

配置BUILD調度優先順序

彈性匯入

  • ELASTIC_LOAD

  • ELASTIC_LOAD_CONFIGS

選擇彈性匯入並配置執行彈性匯入任務的Job型資源群組。

/*+ 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;

調整執⾏計劃

  • 核心版本3.1.8及以上O_CBO_RULE_SWAP_OUTER_JOIN

  • 核心版本3.1.8及以下LEFT_TO_RIGHT_ENABLED

Hash Join的實現會以右表做BUILD,且Left Join不會做左右表的重新排序,在右表資料量很大時會造成執行慢、消耗過多記憶體資源等多個問題。您可以通過添加Hint指定最佳化器根據資源損耗把Left Join轉為Right Join。取值:

  • true:開啟。

  • false(預設值):關閉。

  • /*+ O_CBO_RULE_SWAP_OUTER_JOIN=true*/

  • /*+ LEFT_TO_RIGHT_ENABLED=true*/

Left join最佳化改寫為Right join

REORDER_JOINS

AnalyticDB for MySQL預設開啟自動調整Join順序的功能,您可以根據查詢的資料特徵手動調整Join順序,讓查詢直接根據SQL書寫方式中的Join順序來執行。取值:

  • true(預設值):開啟自動調整Join順序功能。

  • false:關閉自動調整Join順序功能。

/*+ REORDER_JOINS=false*/

手動調整Join順序

AGGREGATION_PATH_TYPE

如果使用兩步彙總方式,在分組彙總的分組數較多時,會消耗很多計算資源。您可以使用該Hint語句跳過局部彙總,直接進行最終彙總。取值:

  • single_agg:跳過局部彙總。

  • auto(預設值):最佳化器自動判斷是否跳過局部彙總。

/*+ AGGREGATION_PATH_TYPE=single_agg*/

分組彙總查詢最佳化

調整運⾏時策略

HASH_PARTITION_COUNT

每個計算任務都會被切分成多個Task並發執行,充分利用計算資源。您可使用該Hint設定並發度。預設值為32,取值範圍為大於0的整數。

/*+ HASH_PARTITION_COUNT=32*/

TASK_WRITER_COUNT

INSERT INTO SELECT匯入任務的並發數,當Worker負載過高時,可修改該Hint降低並發數。預設值為16,取值範圍為大於0的整數。

/*+ TASK_WRITER_COUNT=8*/

CTE_EXECUTION_MODE

是否開啟CTE執行最佳化。CTE執行最佳化功能開啟後,CTE子查詢被多次引用時,只執行一次,提升部分查詢的查詢效能。取值:

  • shared:開啟CTE執行最佳化功能。

  • inline(預設值):關閉CTE執行最佳化功能。

/*+ CTE_EXECUTION_MODE=shared*/

WITH

查詢條件限制

QUERY_MAX_SHUFFLE_DATA_SIZE_MB

查詢的Shuffle資料量。預設情況下,無論查詢的資料量為多少,都不會觸發報錯。若設定了該參數,查詢的資料量超過設定閾值後系統會直接終止查詢並報錯。取值範圍為大於0的整數,單位為MB。

/*+ QUERY_MAX_SHUFFLE_DATA_SIZE_MB=1024*/

MAX_SELECT_ITEMS_COUNT

設定SELECT條件的個數限制。預設值:1024,取值範圍為大於0的整數。

/*+ MAX_SELECT_ITEMS_COUNT=2048*/

MAX_IN_ITEMS_COUNT

設定IN條件的個數限制。預設值:4000,取值範圍為大於0的整數。

/*+ MAX_IN_ITEMS_COUNT=1000*/

MAX_WHERE_ITEMS_COUNT

設定WHERE條件的個數限制。預設值:256,取值範圍為大於0的整數。

/*+ MAX_WHERE_ITEMS_COUNT=512*/

XIHE BSP作業優先順序

QUERY_PRIORITY

BSP作業的優先順序。取值:

  • HIGH

  • NORMAL( 預設值)

  • LOW

  • LOWEST

/*+ QUERY_PRIORITY=HIGH*/

配置項列表

XIHE BSP作業使用的最大ACU數

ELASTIC_JOB_MAX_ACU

單個XIHE BSP作業所使用的最大ACU數。預設值為9,最小值為3,取值範圍

為[3,Job型資源群組最大資源量]。

/*+ ELASTIC_JOB_MAX_ACU=20*/

XIHE BSP作業查詢逾時時間

BATCH_QUERY_TIMEOUT

XIHE BSP作業的逾時時間。預設值是7200000 ms,取值範圍為大於0的整數。單位:毫秒(ms)。

/*+ BATCH_QUERY_TIMEOUT=3600000*/

OSS外表

OUTPUT_FILENAME

通過OSS外表匯出資料時,可以在匯出語句前添加該Hint,自訂儲存在OSS中的檔案名稱。

/*+ OUTPUT_FILENAME=output.csv*/

匯出至OSS

SQL_OUTPUT_OSS_FILE_HEAD_ENABLE

通過OSS外表匯出資料時,匯出到OSS中的資料檔案預設不帶列名,只有資料。若您想匯出帶列名的檔案,請在匯入語句前添加該Hint。取值:

  • true:是。

  • false(預設值):否。

/*+ SQL_OUTPUT_OSS_FILE_HEAD_ENABLE=true*/

HIVE_SPLIT_ASYNC_GENERATION_ENABLED

Hive產生執行計畫時,是否將Hive Split任務非同步提交到隊列中執行。取值:

  • true:是。

  • false(預設值):否。

說明

僅3.1.10.1及以上版本支援該參數。

/*+ HIVE_SPLIT_ASYNC_GENERATION_ENABLED=true*/

通過外表匯入至湖倉版

FAST_PARQUET_READER_ENABLE

當Parquet檔案中的統計資訊有誤時,

是否回退到原生的Parquet reader。

  • true(預設值):是。

  • false:否。

/*+ FAST_PARQUET_READER_ENABLE=true*/

OSS_VECTORIZED_PARQUET_READER_ENABLE

在資料中沒有NULL值的情況下,是否開啟Parquet向量化讀開關。取值:

  • true:是。

  • false(預設值):否。

/*+ OSS_VECTORIZED_PARQUET_READER_ENABLE=true*/

OSS_VECTORIZED_PARQUET_READER_NULL_SCENE_ENABLE

在資料中有NULL值的情況下,是否開啟Parquet向量化讀開關。取值:

  • true:是。

  • false(預設值):否。

/*+ OSS_VECTORIZED_PARQUET_READER_NULL_SCENE_ENABLE=true*/

HUDI_METADATA_TABLE_ENABLED

是否載入Hudi的中繼資料資訊。取值:

  • true:是。

  • false(預設值):否。

/*+ HUDI_METADATA_TABLE_ENABLED=true*/

HUDI_QUERY_TYPE

設定查詢Hudi表的方式。取值:

  • snapshot:查詢指定時間所有提交或壓縮後的資料。

  • read_optimized(預設值):查詢最後一次提交或壓縮之後的資料。

/*+ HUDI_QUERY_TYPE=snapshot*/

HUDI_REALTIME_SKIP_MERGE

快照查詢Hudi表資料時,是否跳過基本檔案和記錄檔的記錄合并。取值:

  • true:是。

  • false(預設值):否。

/*+ HUDI_REALTIME_SKIP_MERGE=true*/

HUDI_MAX_SPLIT_SIZE=

最大Split的大小。預設值為128。單位:MB。

/*+ HUDI_MAX_SPLIT_SIZE=128*/

HUDI_SPLIT_PARALLEL_GENERATION_ENABLED

是否並行產生Split。取值:

  • true(預設值):是。

  • false:否。

/*+ HUDI_SPLIT_PARALLEL_GENERATION_ENABLED=true*/

HUDI_DATA_SKIPPING_ENABLED

在讀取資料時,使用Hudi MetaTable表中的統計資訊跳過不需要讀取的分區,提升查詢效能。取值:

  • true:是。

  • false(預設值):否。

/*+ HUDI_DATA_SKIPPING_ENABLED=true*/

HUDI_SPLIT_ASYNC_GENERATION_ENABLED

在產生執行計畫的階段,是否非同步產生Hudi Split。取值:

  • true(預設值):是。

  • false:否。

/*+ HUDI_SPLIT_ASYNC_GENERATION_ENABLED=true*/

RDS MySQL外表

JDBC_SCAN_SPLITS

通過JDBC執行TableScan時的Split個數。預設值為1,取值範圍為1~100。

/*+ JDBC_SCAN_SPLITS=1*/

通過外表匯入資料

JDBC_SPLIT_COLUMN

讀取RDS MySQL外表時,切分Split的列。

/*+ JDBC_SPLIT_COLUMN=column1*/

JDBC_INSERT_DIRECTLY

RDS MySQL外表寫資料時,預設先寫入暫存資料表,再寫入目標表。您可以通過修改Hint直接將資料寫入目標表,但是在寫入過程中,出現任何報錯,會導致目標表中有髒資料。取值:

  • true:是。

  • false(預設值):否。

/*+ JDBC_INSERT_DIRECTLY=true*/

Tablestore外表

OTS-INSERT-AS-UPDATE

是否使用INSERT語句代替UPDATE語句。取值:

  • true:是。

  • false(預設值):否。

/*+ OTS-INSERT-AS-UPDATE=true*/

查詢並匯入Tablestore資料

MaxCompute外表

ODPS_SPLIT_LIMIT

通過Tunnel讀取資料時,最多切分Split的數量。預設值為1000,取值範圍為1~1000。

/*+ ODPS_SPLIT_LIMIT=1000*/

通過外表匯入至湖倉版

IGNORE_PARTITION_CACHE

執行帶有分區條件的查詢時,不使用緩衝的分區中繼資料資訊,而是從MaxCompute表中直接查詢分區中繼資料。

  • true:是。

  • false(預設值):否。

/*+ IGNORE_PARTITION_CACHE=true*/

ROWS_PER_SPLIT

通過Tunnel讀取資料時,單個Split的最大讀取的資料行數。預設值為500000,取值範圍為10000~500000。

/*+ ROWS_PER_SPLIT=500000*/

STORAGE_API_ENABLED

是否使用MaxCompute Storage API讀取MaxCompute資料。MaxCompute Storage API相比傳統的Tunnel讀取效能有很大提升。

取值:

  • true:是。

  • false(預設值):否。

/*+ STORAGE_API_ENABLED=true*/

APLIT_BYTE_SIZE

通過MaxCompute Storage API讀取資料時,單個Split的最大值。預設值為256,單位:MB。

/*+ APLIT_BYTE_SIZE=256*/

MAX_BATCH_ROW_COUNT

通過MaxCompute Storage API讀取資料時,單個Split的最大行數。預設值為1024。

/*+ MAX_BATCH_ROW_COUNT=1024*/

PAGE_BATCH_SIZE

通過MaxCompute Storage API讀取資料時,每個Page所包含的最大行數。預設值為1024。

/*+ PAGE_BATCH_SIZE=1024*/

MAX_ALLOCATION_PER_SPLIT

通過MaxCompute Storage API讀取資料時,Split層級分配的最大峰值記憶體。預設值為300 MB,單位:MB。

/*+ MAX_ALLOCATION_PER_SPLIT=300*/

ASYNC_GET_SPLIT

MaxCompute產生執行計畫時,是否通過最佳化Split載入效能,將任務非同步提交到隊列中執行。取值:

  • true:是。

  • false(預設值):否。

說明

僅3.1.10.1及以上版本支援該參數。

/*+ ASYNC_GET_SPLIT=true*/

掃描並發控制

SPLIT_FLOW_CONTROL_ENABLED

AnalyticDB for MySQL支援配置掃描並發額度,避免因查詢的掃描並發過大、佔用過多資源,導致節點不穩定的情況。取值如下:

  • true(預設值):開啟掃描並發控制功能。

  • false:關閉掃描並發控制功能。

/*+ SPLIT_FLOW_CONTROL_ENABLED=true*/ SELECT * FROM table;

掃描並發控制

MIN_RUNNING_SPLITS_LIMIT_PER_TASK

Task掃描並發額度的最小值。預設值為1,取值範圍為[1,TARGET_RUNNING_SPLITS_LIMIT_PER_TASK]。

/*+ MIN_RUNNING_SPLITS_LIMIT_PER_TASK=10*/SELECT * FROM orders;

TARGET_RUNNING_SPLITS_LIMIT_PER_TASK

Task掃描並發額度的中間值,基於該值增加或降低掃描並發額度。預設值為32,取值範圍為[MIN_RUNNING_SPLITS_LIMIT_PER_TASK,MAX_RUNNING_SPLITS_LIMIT_PER_TASK]。

/*+ TARGET_RUNNING_SPLITS_LIMIT_PER_TASK=32*/SELECT * FROM adb_test;

MAX_RUNNING_SPLITS_LIMIT_PER_TASK

Task掃描並發額度的最大值。預設值為64,取值範圍大於TARGET_RUNNING_SPLITS_LIMIT_PER_TASK值。

/*+ MAX_RUNNING_SPLITS_LIMIT_PER_TASK=100*/SELECT * FROM adb_test;

Paging Cache(深分頁效能最佳化)

PAGING_ID

啟用Paging Cache功能,並手動指定paging_id用來標識一組相關的分頁查詢的緩衝(即一組Pattern相同,僅LIMITOFFSET參數不同的分頁查詢)。

/*PAGING_ID=paging123*/ SELECT * FROM t_order ORDER BY id LIMIT 0, 100;

Paging Cache(深分頁效能最佳化)

PAGING_CACHE_ENABLED

啟用Paging Cache功能,並根據SQL Pattern自動產生paging_id來標識一組相關的分頁查詢的緩衝(即一組Pattern相同,僅LIMITOFFSET參數不同的分頁查詢)。取值如下:

  • true:開啟Paging Cache功能。

  • false(預設值):關閉Paging Cache功能。

/*PAGING_CACHE_ENABLED=true*/ SELECT * FROM t_order ORDER BY id LIMIT 0, 100;

PAGING_CACHE_VALIDITY_INTERVAL

設定緩衝有效時間,超過該時間後緩衝將失效。若緩衝在失效後一個小時內未被訪問,系統將自動刪除對應的臨時緩衝表。取值範圍為大於0的整數,單位:秒(s)。此參數需與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

是否清理指定Pattern的分頁查詢快取。取值如下:

  • true:是。

  • false(預設值):否。

此參數需與paging_idpaging_cache_enabled配合使用。

/*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(預設值):存量表的表引擎不變,僅當前SQL所建立的表引擎預設為XUANWU_V2。即使在建立該表時顯式指定ENGINE=XUANWU,也會自動將其改寫為XUANWU_V2。

  • false:存量表的表引擎不變,當前SQL所建立的表引擎預設為XUANWU。

/*+ RC_DDL_ENGINE_REWRITE_XUANWUV2=true */

指定表引擎

其他

RESOURCE_GROUP

指定查詢所使⽤的資源群組。若不指定資源群組,預設使用資料庫帳號綁定的資源群組。資料庫帳號未綁定資源群組時,則使用預設資源群組。

/*+ RESOURCE_GROUP=my_group_name*/

DML_EXCEPTION_TO_NULL_ENABLED

INSERT SELECT語句寫入的資料出現非法值,是否拋出異常。取值:

  • true:不拋出異常,寫入NULL值。

  • false(預設值):拋出異常。

/*+ DML_EXCEPTION_TO_NULL_ENABLED=true*/

DISPLAY_HINT

⽤於標記相應的查詢,例如來自於不同的業務方,便於識別。

/*+ DISPLAY_HINT=from_user_123*/

常見問題

如何刪除ADB_CONFIG的某個配置?

如果通過SET ADB_CONFIG key=value;設定了某個配置參數的值,現在想將這個配置參數恢複到預設值,可以採用以下方法。

方法

樣本

SET ADB_CONFIG REMOVE key;
SET ADB_CONFIG REMOVE QUERY_TIMEOUT; --將查詢逾時時間恢複到預設值。

上述命令執行成功後,可以通過SHOW ADB_CONFIG KEY=key;,確認配置參數已恢複到預設值。