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*360000,取值范围为大于0的整数。单位:毫秒(ms)。 |
|
|
过滤条件不下推 |
|
集群级别关闭特定字段的过滤条件下推能力。 |
|
|
查询执行模式 |
QUERY_TYPE |
切换实例的查询执行模式,取值:
说明
数仓版(3.0) 预留模式集群、 湖仓版(3.0) 集群不支持切换实例的查询执行模式。 |
|
|
查询队列 |
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函数远程调用 函数计算服务 中自定义的函数时, 函数计算服务的内网服务接入地址 。详细信息,请参见 服务接入地址 。 |
|
|
XIHE_REMOTE_CALL_SERVER_AK |
通过REMOTE_CALL函数远程调用 函数计算服务 中自定义的函数时, 函数计算服务所属阿里云账号或者RAM用户的AccessKey ID。 |
|
||
XIHE_REMOTE_CALL_SERVER_SK |
通过REMOTE_CALL函数远程调用 函数计算服务 中自定义的函数时, 函数计算服务所属阿里云账号或者RAM用户的AccessKey Secret。 |
|
||
XIHE_REMOTE_CALL_COMPRESS_ENABLED |
通过REMOTE_CALL函数远程调用 函数计算服务 中自定义的函数时,是否使用GZIP格式压缩数据再传输至函数计算服务。 |
|
||
XIHE_REMOTE_CALL_MAX_BATCH_SIZE |
通过REMOTE_CALL函数远程调用 函数计算服务 中自定义的函数时,向函数计算服务发送的数据行数。 |
|
||
扫描并发控制 |
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 |
⽤于标记相应的查询,例如来自于不同的业务方,便于识别。 |
|