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來指定切換新舊叢集的時間視窗。 說明 如果不配置新舊叢集切換的時間視窗,舊叢集中的增量資料全部即時同步到新叢集後,新舊叢集會自動切換。 |
| |
IN條件數限制 | MAX_IN_ITEMS_COUNT | 設定IN條件的個數限制。取值範圍為大於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。 |
| ||
XIHE BSP作業優先順序 | QUERY_PRIORITY | BSP作業的優先順序。取值:
|
| |
XIHE BSP作業使用的最大ACU數 | ELASTIC_JOB_MAX_ACU | 單個XIHE BSP作業所使用的最大ACU數。預設值是9,最小值為3,取值範圍 為[3,Job型資源群組最大資源量]。 |
| |
XIHE BSP作業查詢逾時時間 | BATCH_QUERY_TIMEOUT | XIHE BSP作業的逾時時間。預設值是7200000 ms,取值範圍為大於0的整數。單位:毫秒(ms)。 |
| |
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,掃描並發額度過大或過小都會影響叢集效能,建議您不要修改預設值。 |
| ||
邏輯視圖大小寫敏感 | VIEW_OUTPUT_NAME_CASE_SENSITIVE | 設定邏輯視圖大小寫敏感。取值如下:
|
| |
連續執行多個SQL語句 | ALLOW_MULTI_QUERIES | 使用Multi-Statement功能連續執行多個SQL語句時,手動開啟Multi-Statement功能。取值如下:
|
| |
開啟Binlog | BINLOG_ENABLE |
|
| |
Paging Cache(深分頁效能最佳化) | PAGING_CACHE_SCHEMA | 指定儲存分頁查詢臨時緩衝表的資料庫。若未指定,則使用當前串連的內部資料庫。 |
| |
PAGING_CACHE_MAX_TABLE_COUNT | 設定臨時緩衝表的最大個數限制。超過此數量時建立新的緩衝將失敗。預設值:100,取值範圍為大於0的整數。 |
| ||
PAGING_CACHE_EXPIRATION_TIME | 指定緩衝的到期時間閾值,自動清理指定時間內未訪問的分頁查詢快取。預設值:600,取值範圍為大於0的整數,單位:秒(s)。 |
| ||
PAGING_CACHE_ENABLE | 指定是否全域關閉Paging Cache功能。取值如下:
|
| ||
指定表引擎 | RC_DDL_ENGINE_REWRITE_XUANWUV2 | 在叢集全域指定表引擎。取值:
|
|
常用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 for 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的整數。 |
| ||
XIHE BSP作業優先順序 | QUERY_PRIORITY | BSP作業的優先順序。取值:
|
| |
XIHE BSP作業使用的最大ACU數 | ELASTIC_JOB_MAX_ACU | 單個XIHE BSP作業所使用的最大ACU數。預設值為9,最小值為3,取值範圍 為[3,Job型資源群組最大資源量]。 |
| |
XIHE BSP作業查詢逾時時間 | BATCH_QUERY_TIMEOUT | XIHE BSP作業的逾時時間。預設值是7200000 ms,取值範圍為大於0的整數。單位:毫秒(ms)。 |
| |
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讀取效能有很大提升。 取值:
|
| ||
APLIT_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,取值範圍大於 |
| ||
Paging Cache(深分頁效能最佳化) | PAGING_ID | 啟用Paging Cache功能,並手動指定 |
| |
PAGING_CACHE_ENABLED | 啟用Paging Cache功能,並根據SQL Pattern自動產生
|
| ||
PAGING_CACHE_VALIDITY_INTERVAL | 設定緩衝有效時間,超過該時間後緩衝將失效。若緩衝在失效後一個小時內未被訪問,系統將自動刪除對應的臨時緩衝表。取值範圍為大於0的整數,單位:秒(s)。此參數需與 |
| ||
INVALIDATE_PAGING_CACHE | 是否清理指定Pattern的分頁查詢快取。取值如下:
此參數需與 |
| ||
指定表引擎 | RC_DDL_ENGINE_REWRITE_XUANWUV2 | 指定當前SQL所建立的表的引擎。取值:
|
| |
其他 | RESOURCE_GROUP | 指定查詢所使⽤的資源群組。若不指定資源群組,預設使用資料庫帳號綁定的資源群組。資料庫帳號未綁定資源群組時,則使用預設資源群組。 |
| 無 |
DML_EXCEPTION_TO_NULL_ENABLED | INSERT SELECT語句寫入的資料出現非法值,是否拋出異常。取值:
|
| ||
DISPLAY_HINT | ⽤於標記相應的查詢,例如來自於不同的業務方,便於識別。 |
|
常見問題
如何刪除ADB_CONFIG的某個配置?
如果通過SET ADB_CONFIG key=value;設定了某個配置參數的值,現在想將這個配置參數恢複到預設值,可以採用以下方法。
方法 | 樣本 |
| |
上述命令執行成功後,可以通過SHOW ADB_CONFIG KEY=key;,確認配置參數已恢複到預設值。