AnalyticDB for MySQL支援通過SET ADB_CONFIG
命令和Hint兩種方式配置參數。其中,SET ADB_CONFIG
命令用於修改全域配置,修改後,該配置項會作用於整個叢集;使用Hint修改參數後,該Hint僅作用於指定SQL,不影響全域配置。若同時使用SET ADB_CONFIG
命令和Hint配置了參數,則優先採用Hint方式配置的參數。本文為您介紹雲原生資料倉儲AnalyticDB MySQL版中常見的配置參數。
常用Config參數
類別 | 參數 | 描述 | 樣本 | 文檔連結 |
新舊叢集的切換時間 | REPLICATION_SWITCH_TIME_RANGE | 新舊叢集切換期間,舊叢集會有5~10分鐘的時間僅支援唯讀操作。您可以在串連舊叢集後,配置REPLICATION_SWITCH_TIME_RANGE來指定切換新舊叢集的時間視窗。 說明 如果不配置新舊叢集切換的時間視窗,舊叢集中的增量資料全部即時同步到新叢集後,新舊叢集會自動切換。 |
| |
IN條件數限制 | MAX_IN_ITEMS_COUNT | 設定IN條件的個數限制,預設值:4000。取值範圍為大於0的正整數。 |
| |
查詢逾時時間 | QUERY_TIMEOUT | 叢集層級為所有查詢配置查詢的逾時時間。取值範圍為大於0的整數。單位:毫秒(ms)。 |
| |
INSERT、UPDATE、DELETE逾時時間 | INSERT_SELECT_TIMEOUT | 叢集層級修改INSERT、UPDATE和DELETE語句的最大執行時間。預設值:24*3600000,取值範圍為大於0的整數。單位:毫秒(ms)。 |
| |
過濾條件不下推 |
| 叢集層級關閉特定欄位的過濾條件下推能力。 |
| |
查詢執行模式 | QUERY_TYPE | 切換執行個體的查詢執行模式,取值:
說明 數倉版預留模式叢集、企業版及湖倉版叢集不支援切換執行個體的查詢執行模式。 |
| |
查詢隊列 | 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 | 單個前端節點HIGH隊列的最大可執行查詢數,預設值為40。 |
| ||
XIHE_ENV_QUERY_HIGH_MAX_QUEUED_SIZE | 單個前端節點HIGH隊列的最大可排隊查詢數,預設值為400。 |
| ||
OSS外表匯入 | HIVE_SPLIT_ASYNC_GENERATION_ENABLED | Hive產生執行計畫時,是否將Hive Split任務非同步提交到隊列中執行。取值:
說明 僅3.1.10.1及以上版本支援該參數。 |
| |
MaxCompute外表匯入 | SQL_OUTPUT_BATCH_SIZE | 大量匯入資料時的資料條數。取值範圍為大於0的整數。 |
| |
ENABLE_ODPS_MULTI_PARTITION_PART_MATCH | 是否預先遍曆擷取每個MaxCompute分區的記錄數。 |
| ||
ASYNC_GET_SPLIT | MaxCompute產生執行計畫時,是否通過最佳化Split載入效能,將任務非同步提交到隊列中執行。取值:
說明 僅3.1.10.1及以上版本支援該參數。 |
| ||
BUILD自動調度時間 | RC_CSTORE_BUILD_SCHEDULE_PERIOD | 限制BUILD任務調度時間段,不限任務執行時間段。取值為0~24之間的整數。 |
| |
BUILD調度優先順序 | ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST | 支援對單表或多表配置BUILD調度的優先順序,且優先順序一直生效,直至再次配置該表優先順序時,才會改變。 BUILD調度的優先順序由參數 |
| |
彈性匯入 | RC_ELASTIC_JOB_SCHEDULER_ENABLE | 彈性匯入資料時需手動開啟彈性匯入開關。 |
| |
REMOTE_CALL函數 | XIHE_REMOTE_CALL_SERVER_ENDPOINT | 通過REMOTE_CALL函數遠程調用Function Compute服務中自訂的函數時,Function Compute服務的內網服務接入地址。詳細資料,請參見服務接入地址。 |
| |
XIHE_REMOTE_CALL_SERVER_AK | 通過REMOTE_CALL函數遠程調用Function Compute服務中自訂的函數時,Function Compute服務所屬阿里雲帳號或者RAM使用者的AccessKey ID。 |
| ||
XIHE_REMOTE_CALL_SERVER_SK | 通過REMOTE_CALL函數遠程調用Function Compute服務中自訂的函數時,Function Compute服務所屬阿里雲帳號或者RAM使用者的AccessKey Secret。 |
| ||
XIHE_REMOTE_CALL_COMPRESS_ENABLED | 通過REMOTE_CALL函數遠程調用Function Compute服務中自訂的函數時,是否使用GZIP格式壓縮資料再傳輸至Function Compute服務。 |
| ||
XIHE_REMOTE_CALL_MAX_BATCH_SIZE | 通過REMOTE_CALL函數遠程調用Function Compute服務中自訂的函數時,向Function Compute服務發送的資料行數。 |
| ||
掃描並發控制 | ADB_CONFIG SPLIT_FLOW_CONTROL_ENABLED | AnalyticDB for MySQL支援配置掃描並發額度,避免因查詢的掃描並發過大、佔用過多資源,導致節點不穩定的情況。取值如下:
|
| |
ADB_CONFIG NODE_LEVEL_SPLIT_FLOW_CONTROL_ENABLED | AnalyticDB for MySQL支援根據節點整體的掃描並發額度,動態調整Task的掃描並發額度。取值如下:
|
| ||
MIN_RUNNING_SPLITS_LIMIT_PER_TASK | Task掃描並發額度的最小值。預設值為1,取值範圍為[ |
| ||
TARGET_RUNNING_SPLITS_LIMIT_PER_TASK | Task掃描並發額度的中間值,基於該值增加或降低掃描並發額度。預設值為32,取值範圍為[ |
| ||
MAX_RUNNING_SPLITS_LIMIT_PER_TASK | Task掃描並發額度的最大值。預設值為64,取值範圍大於 |
| ||
ADB_CONFIG WORKER_MAX_RUNNING_SOURCE_SPLITS_PER_NODE | 儲存節點的掃描並發額度預設為256,掃描並發額度過大或過小都會影響叢集效能,建議您不要修改預設值。 |
| ||
ADB_CONFIG EXECUTOR_MAX_RUNNING_SOURCE_SPLITS_PER_NODE | 計算節點的掃描並發額度預設為256,掃描並發額度過大或過小都會影響叢集效能,建議您不要修改預設值。 |
|
常用Hint
類別 | 參數 | 描述 | 樣本 | 文檔連結 |
查詢逾時時間 | QUERY_TIMEOUT | 查詢層級為單次查詢配置查詢的逾時時間。取值範圍為大於0的整數,單位:毫秒(ms)。 |
| |
INSERT、UPDATE、DELETE逾時時間 | INSERT_SELECT_TIMEOUT | 查詢層級修改INSERT、UPDATE和DELETE語句的最大執行時間。預設值:24*3600000,取值範圍為大於0的整數,單位:毫秒(ms)。 |
| |
過濾條件不下推 |
| 查詢層級關閉特定欄位的過濾條件下推能力。 |
| |
BUILD調度優先順序 | build_task_priority | 修改BUILD任務調度的優先順序。目前只支援使用Hint對單表配置BUILD調度的優先順序。預設值為0,取值範圍為大於或等於0的整數,數值越大,BUILD任務調度的優先順序越高。 |
| |
彈性匯入 |
| 選擇彈性匯入並配置執行彈性匯入任務的Job型資源群組。 |
| |
調整執⾏計劃 |
| Hash Join的實現會以右表做BUILD,且Left Join不會做左右表的重新排序,在右表資料量很大時會造成執行慢、消耗過多記憶體資源等多個問題。您可以通過添加Hint指定最佳化器根據資源損耗把Left Join轉為Right Join。取值:
|
| |
reorder_joins | AnalyticDB MySQL預設開啟自動調整Join順序的功能,您可以根據查詢的資料特徵手動調整Join順序,讓查詢直接根據SQL書寫方式中的Join順序來執行。取值:
|
| ||
aggregation_path_type | 如果使用兩步彙總方式,在分組彙總的分組數較多時,會消耗很多計算資源。您可以使用該Hint語句跳過局部彙總,直接進行最終彙總。取值:
|
| ||
調整運⾏時策略 | hash_partition_count | 每個計算任務都會被切分成多個Task並發執行,充分利用計算資源。您可使用該Hint設定並發度。預設值為32,取值範圍為大於0的整數。 |
| 無 |
task_writer_count | INSERT INTO SELECT匯入任務的並發數,當Worker負載過高時,可修改該Hint降低並發數。預設值為16,取值範圍為大於0的整數。 |
| ||
cte_execution_mode | 是否開啟CTE執行最佳化。CTE執行最佳化功能開啟後,CTE子查詢被多次引用時,只執行一次,提升部分查詢的查詢效能。取值:
|
| ||
查詢條件限制 | query_max_shuffle_data_size_mb | 查詢的Shuffle資料量。預設情況下,無論查詢的資料量為多少,都不會觸發報錯。若設定了該參數,查詢的資料量超過設定閾值後系統會直接終止查詢並報錯。取值範圍為大於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外表匯出資料時,可以在匯出語句前添加該Hint,自訂儲存在OSS中的檔案名稱。 |
| |
sql_output_oss_file_head_enable | 通過OSS外表匯出資料時,匯出到OSS中的資料檔案預設不帶列名,只有資料。若您想匯出帶列名的檔案,請在匯入語句前添加該Hint。取值:
|
| ||
hive_split_async_generation_enabled | Hive產生執行計畫時,是否將Hive Split任務非同步提交到隊列中執行。取值:
說明 僅3.1.10.1及以上版本支援該參數。 |
| ||
fast_parquet_reader_enable | 當Parquet檔案中的統計資訊有誤時, 是否回退到原生的Parquet reader。
|
| ||
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 | 最大Split的大小。預設值為128。單位:MB。 |
| ||
hudi_split_parallel_generation_enabled | 是否並行產生Split。取值:
|
| ||
hudi_data_skipping_enabled | 在讀取資料時,使用Hudi MetaTable表中的統計資訊跳過不需要讀取的分區,提升查詢效能。取值:
|
| ||
hudi_split_async_generation_enabled | 在產生執行計畫的階段,是否非同步產生Hudi Split。取值:
|
| ||
RDS MySQL外表 | jdbc_scan_splits | 通過JDBC執行TableScan時的Split個數。預設值為1,取值範圍為1~100。 |
| |
jdbc_split_column | 讀取RDS MySQL外表時,切分Split的列。 |
| ||
jdbc_insert_directly | RDS MySQL外表寫資料時,預設先寫入暫存資料表,再寫入目標表。您可以通過修改Hint直接將資料寫入目標表,但是在寫入過程中,出現任何報錯,會導致目標表中有髒資料。取值:
|
| ||
Tablestore外表 | ots-insert-as-update | 是否使用INSERT語句代替UPDATE語句。取值:
|
| |
MaxCompute外表 | odps_split_limit | 通過Tunnel讀取資料時,最多切分Split的數量。預設值為1000,取值範圍為1~1000。 |
| |
ignore_partition_cache | 執行帶有分區條件的查詢時,不使用緩衝的分區中繼資料資訊,而是從MaxCompute表中直接查詢分區中繼資料。
|
| ||
rows_per_split | 通過Tunnel讀取資料時,單個Split的最大讀取的資料行數。預設值為500000,取值範圍為10000~500000。 |
| ||
storage_api_enabled | 是否使用MaxCompute Storage API讀取MaxCompute資料。MaxCompute Storage API相比傳統的Tunnel讀取效能有很大提升。 取值:
|
| ||
split_byte_size | 通過MaxCompute Storage API讀取資料時,單個Split的最大值。預設值為256,單位:MB。 |
| ||
max_batch_row_count | 通過MaxCompute Storage API讀取資料時,單個Split的最大行數。預設值為1024。 |
| ||
page_batch_size | 通過MaxCompute Storage API讀取資料時,每個Page所包含的最大行數。預設值為1024。 |
| ||
max_allocation_per_split | 通過MaxCompute Storage API讀取資料時,Split層級分配的最大峰值記憶體。預設值為300 MB,單位:MB。 |
| ||
async_get_split | MaxCompute產生執行計畫時,是否通過最佳化Split載入效能,將任務非同步提交到隊列中執行。取值:
說明 僅3.1.10.1及以上版本支援該參數。 |
| ||
掃描並發控制 | SPLIT_FLOW_CONTROL_ENABLED | AnalyticDB for MySQL支援配置掃描並發額度,避免因查詢的掃描並發過大、佔用過多資源,導致節點不穩定的情況。取值如下:
|
| |
MIN_RUNNING_SPLITS_LIMIT_PER_TASK | Task掃描並發額度的最小值。預設值為1,取值範圍為[ |
| ||
TARGET_RUNNING_SPLITS_LIMIT_PER_TASK | Task掃描並發額度的中間值,基於該值增加或降低掃描並發額度。預設值為32,取值範圍為[ |
| ||
MAX_RUNNING_SPLITS_LIMIT_PER_TASK | Task掃描並發額度的最大值。預設值為64,取值範圍大於 |
| ||
其他 | resource_group | 指定查詢所使⽤的資源群組。若不指定資源群組,預設使用資料庫帳號綁定的資源群組。資料庫帳號未綁定資源群組時,則使用預設資源群組。 |
| 無 |
dml_exception_to_null_enabled | INSERT SELECT語句寫入的資料出現非法值,是否拋出異常。取值:
|
| ||
display_hint | ⽤於標記相應的查詢,例如來自於不同的業務方,便於識別。 |
|