Config和Hint配置參數(shù)
AnalyticDB for MySQL支持通過(guò)SET ADB_CONFIG
命令和Hint兩種方式配置參數(shù)。其中,SET ADB_CONFIG
命令用于修改全局配置,修改后,該配置項(xiàng)會(huì)作用于整個(gè)集群;使用Hint修改參數(shù)后,該Hint僅作用于指定SQL,不影響全局配置。若同時(shí)使用SET ADB_CONFIG
命令和Hint配置了參數(shù),則優(yōu)先采用Hint方式配置的參數(shù)。本文為您介紹云原生數(shù)據(jù)倉(cāng)庫(kù) AnalyticDB MySQL 版中常見(jiàn)的配置參數(shù)。
常用Config參數(shù)
類別 | 參數(shù) | 描述 | 示例 | 文檔鏈接 |
新舊集群的切換時(shí)間 | REPLICATION_SWITCH_TIME_RANGE | 新舊集群切換期間,舊集群會(huì)有5~10分鐘的時(shí)間僅支持只讀操作。您可以在連接舊集群后,配置REPLICATION_SWITCH_TIME_RANGE來(lái)指定切換新舊集群的時(shí)間窗口。 說(shuō)明 如果不配置新舊集群切換的時(shí)間窗口,舊集群中的增量數(shù)據(jù)全部實(shí)時(shí)同步到新集群后,新舊集群會(huì)自動(dòng)切換。 |
| |
IN條件數(shù)限制 | MAX_IN_ITEMS_COUNT | 設(shè)置IN條件的個(gè)數(shù)限制,默認(rèn)值:4000。取值范圍為大于0的正整數(shù)。 |
| |
查詢超時(shí)時(shí)間 | QUERY_TIMEOUT | 集群級(jí)別為所有查詢配置查詢的超時(shí)時(shí)間。取值范圍為大于0的整數(shù)。單位:毫秒(ms)。 |
| |
INSERT、UPDATE、DELETE超時(shí)時(shí)間 | INSERT_SELECT_TIMEOUT | 集群級(jí)別修改INSERT、UPDATE和DELETE語(yǔ)句的最大執(zhí)行時(shí)間。默認(rèn)值:24*3600000,取值范圍為大于0的整數(shù)。單位:毫秒(ms)。 |
| |
過(guò)濾條件不下推 |
| 集群級(jí)別關(guān)閉特定字段的過(guò)濾條件下推能力。 |
| |
查詢執(zhí)行模式 | QUERY_TYPE | 切換實(shí)例的查詢執(zhí)行模式,取值:
說(shuō)明 數(shù)倉(cāng)版預(yù)留模式集群、企業(yè)版、基礎(chǔ)版及湖倉(cāng)版集群不支持切換實(shí)例的查詢執(zhí)行模式。 |
| |
查詢隊(duì)列 | XIHE_ENV_QUERY_ETL_MAX_CONCURRENT_SIZE | 單個(gè)前端節(jié)點(diǎn)LOWEST隊(duì)列的最大可運(yùn)行查詢數(shù),默認(rèn)值為20。 |
| |
XIHE_ENV_QUERY_ETL_MAX_QUEUED_SIZE | 單個(gè)前端節(jié)點(diǎn)LOWEST隊(duì)列的最大可排隊(duì)查詢數(shù),默認(rèn)值為200。 |
| ||
XIHE_ENV_QUERY_LOW_PRIORITY_MAX_CONCURRENT_SIZE | 單個(gè)前端節(jié)點(diǎn)LOW隊(duì)列的最大可運(yùn)行查詢數(shù),默認(rèn)值為20。 |
| ||
XIHE_ENV_QUERY_LOW_PRIORITY_MAX_QUEUED_SIZE | 單個(gè)前端節(jié)點(diǎn)LOW隊(duì)列的最大可排隊(duì)查詢數(shù),默認(rèn)值為200。 |
| ||
XIHE_ENV_QUERY_NORMAL_MAX_CONCURRENT_SIZE | 單個(gè)前端節(jié)點(diǎn)NORMAL隊(duì)列的最大可運(yùn)行查詢數(shù),默認(rèn)值為20。 |
| ||
XIHE_ENV_QUERY_NORMAL_MAX_QUEUED_SIZE | 單個(gè)前端節(jié)點(diǎn)NORMAL隊(duì)列的最大可排隊(duì)查詢數(shù),默認(rèn)值為200。 |
| ||
XIHE_ENV_QUERY_HIGH_MAX_CONCURRENT_SIZE | 單個(gè)前端節(jié)點(diǎn)HIGH隊(duì)列的最大可運(yùn)行查詢數(shù),默認(rèn)值為40。 |
| ||
XIHE_ENV_QUERY_HIGH_MAX_QUEUED_SIZE | 單個(gè)前端節(jié)點(diǎn)HIGH隊(duì)列的最大可排隊(duì)查詢數(shù),默認(rèn)值為400。 |
| ||
OSS外表導(dǎo)入 | HIVE_SPLIT_ASYNC_GENERATION_ENABLED | Hive生成執(zhí)行計(jì)劃時(shí),是否將Hive Split任務(wù)異步提交到隊(duì)列中執(zhí)行。取值:
說(shuō)明 僅3.1.10.1及以上版本支持該參數(shù)。 |
| |
MaxCompute外表導(dǎo)入 | SQL_OUTPUT_BATCH_SIZE | 批量導(dǎo)入數(shù)據(jù)時(shí)的數(shù)據(jù)條數(shù)。取值范圍為大于0的整數(shù)。 |
| |
ENABLE_ODPS_MULTI_PARTITION_PART_MATCH | 是否預(yù)先遍歷獲取每個(gè)MaxCompute分區(qū)的記錄數(shù)。 |
| ||
ASYNC_GET_SPLIT | MaxCompute生成執(zhí)行計(jì)劃時(shí),是否通過(guò)優(yōu)化Split加載性能,將任務(wù)異步提交到隊(duì)列中執(zhí)行。取值:
說(shuō)明 僅3.1.10.1及以上版本支持該參數(shù)。 |
| ||
BUILD自動(dòng)調(diào)度時(shí)間 | RC_CSTORE_BUILD_SCHEDULE_PERIOD | 限制BUILD任務(wù)調(diào)度時(shí)間段,不限任務(wù)執(zhí)行時(shí)間段。取值為0~24之間的整數(shù)。 |
| |
BUILD調(diào)度優(yōu)先級(jí) | ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST | 支持對(duì)單表或多表配置BUILD調(diào)度的優(yōu)先級(jí),且優(yōu)先級(jí)一直生效,直至再次配置該表優(yōu)先級(jí)時(shí),才會(huì)改變。 BUILD調(diào)度的優(yōu)先級(jí)由參數(shù) |
| |
彈性導(dǎo)入 | RC_ELASTIC_JOB_SCHEDULER_ENABLE | 彈性導(dǎo)入數(shù)據(jù)時(shí)需手動(dòng)打開(kāi)彈性導(dǎo)入開(kāi)關(guān)。 |
| |
REMOTE_CALL函數(shù) | XIHE_REMOTE_CALL_SERVER_ENDPOINT | 通過(guò)REMOTE_CALL函數(shù)遠(yuǎn)程調(diào)用函數(shù)計(jì)算服務(wù)中自定義的函數(shù)時(shí),函數(shù)計(jì)算服務(wù)的內(nèi)網(wǎng)服務(wù)接入地址。詳細(xì)信息,請(qǐng)參見(jiàn)服務(wù)接入地址。 |
| |
XIHE_REMOTE_CALL_SERVER_AK | 通過(guò)REMOTE_CALL函數(shù)遠(yuǎn)程調(diào)用函數(shù)計(jì)算服務(wù)中自定義的函數(shù)時(shí),函數(shù)計(jì)算服務(wù)所屬阿里云賬號(hào)或者RAM用戶的AccessKey ID。 |
| ||
XIHE_REMOTE_CALL_SERVER_SK | 通過(guò)REMOTE_CALL函數(shù)遠(yuǎn)程調(diào)用函數(shù)計(jì)算服務(wù)中自定義的函數(shù)時(shí),函數(shù)計(jì)算服務(wù)所屬阿里云賬號(hào)或者RAM用戶的AccessKey Secret。 |
| ||
XIHE_REMOTE_CALL_COMPRESS_ENABLED | 通過(guò)REMOTE_CALL函數(shù)遠(yuǎn)程調(diào)用函數(shù)計(jì)算服務(wù)中自定義的函數(shù)時(shí),是否使用GZIP格式壓縮數(shù)據(jù)再傳輸至函數(shù)計(jì)算服務(wù)。 |
| ||
XIHE_REMOTE_CALL_MAX_BATCH_SIZE | 通過(guò)REMOTE_CALL函數(shù)遠(yuǎn)程調(diào)用函數(shù)計(jì)算服務(wù)中自定義的函數(shù)時(shí),向函數(shù)計(jì)算服務(wù)發(fā)送的數(shù)據(jù)行數(shù)。 |
| ||
掃描并發(fā)控制 | ADB_CONFIG SPLIT_FLOW_CONTROL_ENABLED | AnalyticDB for MySQL支持配置掃描并發(fā)額度,避免因查詢的掃描并發(fā)過(guò)大、占用過(guò)多資源,導(dǎo)致節(jié)點(diǎn)不穩(wěn)定的情況。取值如下:
|
| |
ADB_CONFIG NODE_LEVEL_SPLIT_FLOW_CONTROL_ENABLED | AnalyticDB for MySQL支持根據(jù)節(jié)點(diǎn)整體的掃描并發(fā)額度,動(dòng)態(tài)調(diào)整Task的掃描并發(fā)額度。取值如下:
|
| ||
MIN_RUNNING_SPLITS_LIMIT_PER_TASK | Task掃描并發(fā)額度的最小值。默認(rèn)值為1,取值范圍為[ |
| ||
TARGET_RUNNING_SPLITS_LIMIT_PER_TASK | Task掃描并發(fā)額度的中間值,基于該值增加或降低掃描并發(fā)額度。默認(rèn)值為32,取值范圍為[ |
| ||
MAX_RUNNING_SPLITS_LIMIT_PER_TASK | Task掃描并發(fā)額度的最大值。默認(rèn)值為64,取值范圍大于 |
| ||
ADB_CONFIG WORKER_MAX_RUNNING_SOURCE_SPLITS_PER_NODE | 存儲(chǔ)節(jié)點(diǎn)的掃描并發(fā)額度默認(rèn)為256,掃描并發(fā)額度過(guò)大或過(guò)小都會(huì)影響集群性能,建議您不要修改默認(rèn)值。 |
| ||
ADB_CONFIG EXECUTOR_MAX_RUNNING_SOURCE_SPLITS_PER_NODE | 計(jì)算節(jié)點(diǎn)的掃描并發(fā)額度默認(rèn)為256,掃描并發(fā)額度過(guò)大或過(guò)小都會(huì)影響集群性能,建議您不要修改默認(rèn)值。 |
|
常用Hint
類別 | 參數(shù) | 描述 | 示例 | 文檔鏈接 |
查詢超時(shí)時(shí)間 | QUERY_TIMEOUT | 查詢級(jí)別為單次查詢配置查詢的超時(shí)時(shí)間。取值范圍為大于0的整數(shù),單位:毫秒(ms)。 |
| |
INSERT、UPDATE、DELETE超時(shí)時(shí)間 | INSERT_SELECT_TIMEOUT | 查詢級(jí)別修改INSERT、UPDATE和DELETE語(yǔ)句的最大執(zhí)行時(shí)間。默認(rèn)值:24*3600000,取值范圍為大于0的整數(shù),單位:毫秒(ms)。 |
| |
過(guò)濾條件不下推 |
| 查詢級(jí)別關(guān)閉特定字段的過(guò)濾條件下推能力。 |
| |
BUILD調(diào)度優(yōu)先級(jí) | build_task_priority | 修改BUILD任務(wù)調(diào)度的優(yōu)先級(jí)。目前只支持使用Hint對(duì)單表配置BUILD調(diào)度的優(yōu)先級(jí)。默認(rèn)值為0,取值范圍為大于或等于0的整數(shù),數(shù)值越大,BUILD任務(wù)調(diào)度的優(yōu)先級(jí)越高。 |
| |
彈性導(dǎo)入 |
| 選擇彈性導(dǎo)入并配置執(zhí)行彈性導(dǎo)入任務(wù)的Job型資源組。 |
| |
調(diào)整執(zhí)?計(jì)劃 |
| Hash Join的實(shí)現(xiàn)會(huì)以右表做BUILD,且Left Join不會(huì)做左右表的重新排序,在右表數(shù)據(jù)量很大時(shí)會(huì)造成執(zhí)行慢、消耗過(guò)多內(nèi)存資源等多個(gè)問(wèn)題。您可以通過(guò)添加Hint指定優(yōu)化器根據(jù)資源損耗把Left Join轉(zhuǎn)為Right Join。取值:
|
| |
reorder_joins | AnalyticDB for MySQL默認(rèn)開(kāi)啟自動(dòng)調(diào)整Join順序的功能,您可以根據(jù)查詢的數(shù)據(jù)特征手動(dòng)調(diào)整Join順序,讓查詢直接根據(jù)SQL書寫方式中的Join順序來(lái)執(zhí)行。取值:
|
| ||
aggregation_path_type | 如果使用兩步聚合方式,在分組聚合的分組數(shù)較多時(shí),會(huì)消耗很多計(jì)算資源。您可以使用該Hint語(yǔ)句跳過(guò)局部聚合,直接進(jìn)行最終聚合。取值:
|
| ||
調(diào)整運(yùn)?時(shí)策略 | hash_partition_count | 每個(gè)計(jì)算任務(wù)都會(huì)被切分成多個(gè)Task并發(fā)執(zhí)行,充分利用計(jì)算資源。您可使用該Hint設(shè)置并發(fā)度。默認(rèn)值為32,取值范圍為大于0的整數(shù)。 |
| 無(wú) |
task_writer_count | INSERT INTO SELECT導(dǎo)入任務(wù)的并發(fā)數(shù),當(dāng)Worker負(fù)載過(guò)高時(shí),可修改該Hint降低并發(fā)數(shù)。默認(rèn)值為16,取值范圍為大于0的整數(shù)。 |
| ||
cte_execution_mode | 是否開(kāi)啟CTE執(zhí)行優(yōu)化。CTE執(zhí)行優(yōu)化功能開(kāi)啟后,CTE子查詢被多次引用時(shí),只執(zhí)行一次,提升部分查詢的查詢性能。取值:
|
| ||
查詢條件限制 | query_max_shuffle_data_size_mb | 查詢的Shuffle數(shù)據(jù)量。默認(rèn)情況下,無(wú)論查詢的數(shù)據(jù)量為多少,都不會(huì)觸發(fā)報(bào)錯(cuò)。若設(shè)置了該參數(shù),查詢的數(shù)據(jù)量超過(guò)設(shè)定閾值后系統(tǒng)會(huì)直接終止查詢并報(bào)錯(cuò)。取值范圍為大于0的整數(shù),單位為MB。 |
| 無(wú) |
max_select_items_count | 設(shè)置SELECT條件的個(gè)數(shù)限制。默認(rèn)值:1024,取值范圍為大于0的整數(shù)。 |
| ||
max_in_items_count | 設(shè)置IN條件的個(gè)數(shù)限制。默認(rèn)值:4000,取值范圍為大于0的整數(shù)。 |
| ||
max_where_items_count | 設(shè)置WHERE條件的個(gè)數(shù)限制。默認(rèn)值:256,取值范圍為大于0的整數(shù)。 |
| ||
OSS外表 | output_filename | 通過(guò)OSS外表導(dǎo)出數(shù)據(jù)時(shí),可以在導(dǎo)出語(yǔ)句前添加該Hint,自定義存儲(chǔ)在OSS中的文件名稱。 |
| |
sql_output_oss_file_head_enable | 通過(guò)OSS外表導(dǎo)出數(shù)據(jù)時(shí),導(dǎo)出到OSS中的數(shù)據(jù)文件默認(rèn)不帶列名,只有數(shù)據(jù)。若您想導(dǎo)出帶列名的文件,請(qǐng)?jiān)趯?dǎo)入語(yǔ)句前添加該Hint。取值:
|
| ||
hive_split_async_generation_enabled | Hive生成執(zhí)行計(jì)劃時(shí),是否將Hive Split任務(wù)異步提交到隊(duì)列中執(zhí)行。取值:
說(shuō)明 僅3.1.10.1及以上版本支持該參數(shù)。 |
| ||
fast_parquet_reader_enable | 當(dāng)Parquet文件中的統(tǒng)計(jì)信息有誤時(shí), 是否回退到原生的Parquet reader。
|
| ||
oss_vectorized_parquet_reader_enable | 在數(shù)據(jù)中沒(méi)有NULL值的情況下,是否開(kāi)啟Parquet向量化讀開(kāi)關(guān)。取值:
|
| ||
oss_vectorized_parquet_reader_null_scene_enable | 在數(shù)據(jù)中有NULL值的情況下,是否開(kāi)啟Parquet向量化讀開(kāi)關(guān)。取值:
|
| ||
hudi_metadata_table_enabled | 是否加載Hudi的元數(shù)據(jù)信息。取值:
|
| ||
hudi_query_type | 設(shè)置查詢Hudi表的方式。取值:
|
| ||
hudi_realtime_skip_merge | 快照查詢Hudi表數(shù)據(jù)時(shí),是否跳過(guò)基本文件和日志文件的記錄合并。取值:
|
| ||
hudi_max_split_size | 最大Split的大小。默認(rèn)值為128。單位:MB。 |
| ||
hudi_split_parallel_generation_enabled | 是否并行生成Split。取值:
|
| ||
hudi_data_skipping_enabled | 在讀取數(shù)據(jù)時(shí),使用Hudi MetaTable表中的統(tǒng)計(jì)信息跳過(guò)不需要讀取的分片,提升查詢性能。取值:
|
| ||
hudi_split_async_generation_enabled | 在生成執(zhí)行計(jì)劃的階段,是否異步生成Hudi Split。取值:
|
| ||
RDS MySQL外表 | jdbc_scan_splits | 通過(guò)JDBC執(zhí)行TableScan時(shí)的Split個(gè)數(shù)。默認(rèn)值為1,取值范圍為1~100。 |
| |
jdbc_split_column | 讀取RDS MySQL外表時(shí),切分Split的列。 |
| ||
jdbc_insert_directly | RDS MySQL外表寫數(shù)據(jù)時(shí),默認(rèn)先寫入臨時(shí)表,再寫入目標(biāo)表。您可以通過(guò)修改Hint直接將數(shù)據(jù)寫入目標(biāo)表,但是在寫入過(guò)程中,出現(xiàn)任何報(bào)錯(cuò),會(huì)導(dǎo)致目標(biāo)表中有臟數(shù)據(jù)。取值:
|
| ||
Tablestore外表 | ots-insert-as-update | 是否使用INSERT語(yǔ)句代替UPDATE語(yǔ)句。取值:
|
| |
MaxCompute外表 | odps_split_limit | 通過(guò)Tunnel讀取數(shù)據(jù)時(shí),最多切分Split的數(shù)量。默認(rèn)值為1000,取值范圍為1~1000。 |
| |
ignore_partition_cache | 執(zhí)行帶有分區(qū)條件的查詢時(shí),不使用緩存的分區(qū)元數(shù)據(jù)信息,而是從MaxCompute表中直接查詢分區(qū)元數(shù)據(jù)。
|
| ||
rows_per_split | 通過(guò)Tunnel讀取數(shù)據(jù)時(shí),單個(gè)Split的最大讀取的數(shù)據(jù)行數(shù)。默認(rèn)值為500000,取值范圍為10000~500000。 |
| ||
storage_api_enabled | 是否使用MaxCompute Storage API讀取MaxCompute數(shù)據(jù)。MaxCompute Storage API相比傳統(tǒng)的Tunnel讀取性能有很大提升。 取值:
|
| ||
split_byte_size | 通過(guò)MaxCompute Storage API讀取數(shù)據(jù)時(shí),單個(gè)Split的最大值。默認(rèn)值為256,單位:MB。 |
| ||
max_batch_row_count | 通過(guò)MaxCompute Storage API讀取數(shù)據(jù)時(shí),單個(gè)Split的最大行數(shù)。默認(rèn)值為1024。 |
| ||
page_batch_size | 通過(guò)MaxCompute Storage API讀取數(shù)據(jù)時(shí),每個(gè)Page所包含的最大行數(shù)。默認(rèn)值為1024。 |
| ||
max_allocation_per_split | 通過(guò)MaxCompute Storage API讀取數(shù)據(jù)時(shí),Split級(jí)別分配的最大峰值內(nèi)存。默認(rèn)值為300 MB,單位:MB。 |
| ||
async_get_split | MaxCompute生成執(zhí)行計(jì)劃時(shí),是否通過(guò)優(yōu)化Split加載性能,將任務(wù)異步提交到隊(duì)列中執(zhí)行。取值:
說(shuō)明 僅3.1.10.1及以上版本支持該參數(shù)。 |
| ||
掃描并發(fā)控制 | SPLIT_FLOW_CONTROL_ENABLED | AnalyticDB for MySQL支持配置掃描并發(fā)額度,避免因查詢的掃描并發(fā)過(guò)大、占用過(guò)多資源,導(dǎo)致節(jié)點(diǎn)不穩(wěn)定的情況。取值如下:
|
| |
MIN_RUNNING_SPLITS_LIMIT_PER_TASK | Task掃描并發(fā)額度的最小值。默認(rèn)值為1,取值范圍為[ |
| ||
TARGET_RUNNING_SPLITS_LIMIT_PER_TASK | Task掃描并發(fā)額度的中間值,基于該值增加或降低掃描并發(fā)額度。默認(rèn)值為32,取值范圍為[ |
| ||
MAX_RUNNING_SPLITS_LIMIT_PER_TASK | Task掃描并發(fā)額度的最大值。默認(rèn)值為64,取值范圍大于 |
| ||
其他 | resource_group | 指定查詢所使?的資源組。若不指定資源組,默認(rèn)使用數(shù)據(jù)庫(kù)賬號(hào)綁定的資源組。數(shù)據(jù)庫(kù)賬號(hào)未綁定資源組時(shí),則使用默認(rèn)資源組。 |
| 無(wú) |
dml_exception_to_null_enabled | INSERT SELECT語(yǔ)句寫入的數(shù)據(jù)出現(xiàn)非法值,是否拋出異常。取值:
|
| ||
display_hint | ?于標(biāo)記相應(yīng)的查詢,例如來(lái)自于不同的業(yè)務(wù)方,便于識(shí)別。 |
|