本文将详细介绍PolarDB MySQL版内核参数信息。
您可以在这里了解到根据不同的功能的相关参数。
集群参数在PolarDB控制台上都已加上MySQL配置文件的兼容性前缀loose_。
列存索引(IMCI)
参数名称 | 级别 | 参数说明 |
loose_allow_implicit_imci_alter_comment | Session | 是否允许修改表级备注信息。取值范围如下:
|
loose_imci_enable_pack_order_key | Global/Session | 新建列存索引时数据排序功能控制开关。取值如下:
|
loose_imci_enable_pack_order_key_changed_rebuild | Global | 列存索引在索引排序发生变化时,是否需要重建表。取值范围如下:
|
loose_imci_parallel_build_threads_per_table | Global | 设置列索引的排序键的单张表的线程数量。 取值范围:1~128。默认值:8。 |
loose_imci_optimizer_switch | Global/Session | 是否在满足条件的查询语句中使用Hybrid Plan加速宽表查询。取值范围如下:
说明 如果查询语句中涉及的表没有统计信息,或未启用列存索引的基数估计和代价计算功能,即使该参数设置为ON,列存索引的JOIN REORDER功能也不会启用。 |
loose_imci_auto_update_statistic | Global/Session | 当统计信息过旧时,列存索引(IMCI)优化器是否重新收集统计信息。取值如下:
|
loose_imci_max_enum_join_pairs | Global | 在使用列存索引功能并开启连接重排序时,允许列存索引(IMCI)优化器搜索的等价执行计划数量。 取值范围:0~4294967295。默认值:2000。 |
loose_etl_from_imci | Global/Session | 是否开启使用ETL从列存中读取数据。取值范围如下:
|
loose_etl_from_imci_compress | Global/Session | 从只读列存节点读取数据时,是否需要压缩文件。取值如下:
|
loose_imci_enable_hybrid_plan | Global | 使用Hybrid Plan加速宽表查询功能的控制开关。取值范围如下:
|
loose_imci_enable_window_function | Global | 含有窗口函数的SQL语句能否使用列存索引功能。取值范围如下:
|
loose_imci_min_virtual_memory | Global | 使用列存索引进行查询的最小内存。 取值范围:1~9223372036854775807。默认值:DBNodeClassMemory*3/20。单位为Byte。 |
loose_imci_max_virtual_memory | Global | 使用列存索引进行查询的最大内存。 取值范围:1~9223372036854775807。默认值:9223372036854775807。单位为Byte。 |
loose_imci_ap_threshold | Global/Session | 分发至列存节点的SQL语句的预估执行代价阈值。 取值范围:1~18446744073709551615。默认值:50000。 说明 开启列存和行存自动引流功能后,如果SQL语句的预估执行代价阈值大于50000,则路由至列存节点。 |
loose_cost_threshold_for_imci | Session | 列存节点内部当前SQL语句的预估执行代价阈值。 取值范围:1~18446744073709551615。默认值:50000。 说明 开启列存和行存自动引流功能后,如果SQL语句的预估执行代价阈值大于50000,则选择列存执行计划。否则,选择行存执行计划。 |
loose_imci_enable_query_trace | Global | 列存索引查询优化过程中,是否打印内核错误日志的控制开关。取值范围如下:
|
loose_polar_enable_implicit_imci_with_create_table | Global | 是否为所有新建的表添加全表覆盖的列索引。取值范围如下:
|
loose_imci_columnar_advise_buffer_size | Global | 设置 取值范围:0~18446744073709551615。默认值:8388608。单位为Byte。 |
loose_imci_default_pack_shift | Global | 设置列存索引的行组(row group)大小。 取值范围:7~18。默认值:14。 说明 PolarDB MySQL版8.0.1版本且小版本为8.0.1.1.36及之前版本,该参数的默认值为16。 |
loose_slow_log_record_imci | Global | 设置是否在慢日志中添加与列存索引相关的信息。取值范围如下:
|
loose_imci_default_write_policy | Global | 设置列存索引数据的写入策略。取值范围如下:
|
弹性并行查询(Elastic Parallel Query)
参数名称 | 级别 | 参数说明 |
loose_max_parallel_degree | Global/Session | 单个查询的最大并行度,即并行执行的最大Worker数量。 取值范围:0~1024。默认值:0,表示关闭并行查询。 说明
|
loose_max_parallel_workers | Global | 最大允许同时运行的并行worker线程数,超过该值后并行查询需要进入任务队列中等待。 取值范围:1~10000。默认值为CPU核数的2倍。 说明
|
loose_queuing_parallel_degree_limit | Global | 最大允许同时进入并行排队的并行度总和,超过该值后查询将被禁止并行查询,回退为串行执行。 取值范围:0~10000。默认值:64。 |
loose_pq_max_queuing_time | Global/Session | 并行查询在队列中最大等待时间,等待时间超出该值后直接回退为串行执行。 取值范围:0~18446744073709551615。默认值:200。单位:毫秒。 |
loose_parallel_degree_policy | Global | 设置单个查询的并行度配置策略,取值范围如下:
说明 更多关于并行度配置策略的详细介绍,请参见并行资源控制策略配置。 |
loose_records_threshold_for_parallelism | Session | 若优化器估算出语句中存在扫描记录数超过该阈值的表,优化器会考虑选择并行执行计划。 取值范围:0~18446744073709551615。默认值:10000。 说明 若您的业务量较小或复杂查询业务并发较低,您可以选择将该阈值设置为2000或以上。 |
loose_cost_threshold_for_parallelism | 若优化器估算查询的串行执行代价超过该阈值,优化器会考虑选择选择并行执行计划。 取值范围:0~18446744073709551615。默认值:50000。 | |
loose_records_threshold_for_mpp | 查询语句中表扫描行数超过该阈值后,优化器会考虑选择多机并行执行方式。 取值范围:0~18446744073709551615。默认:0,含义是自动取值loose_records_threshold_for_parallelism的N倍,N为ePQ集群的节点个数。 | |
loose_cost_threshold_for_mpp | 查询语句的串行执行代价超过该阈值后,优化器会考虑选择多机并行执行方式。 取值范围:0~18446744073709551615。默认值:0,含义是自动取值loose_cost_threshold_for_parallelism的N倍,N为节点个数。 | |
loose_auto_dop_cpu_pct_hwm | Global | CPU使用率阈值。若CPU使用率超过阈值,PolarDB会禁止并行查询计划。 取值范围:0~100。默认值:70。 |
loose_auto_dop_mem_pct_hwm | 内存使用率阈值。若内存使用率超过阈值,PolarDB会禁止并行查询计划。 取值范围:0~100。默认值:90。 | |
loose_auto_dop_iops_pct_hwm | IOPS使用率阈值。若IOPS使用率超过阈值,PolarDB会禁止并行查询计划。 取值范围:0~100。默认值:80。 |
查询优化
参数名称 | 级别 | 参数说明 |
loose_polar_optimizer_switch | Global/Session | 仅开启或关闭子查询折叠功能。默认不做子查询合并。 取值范围如下:
|
Global/Session | 查询优化控制开关。取值范围如下:
| |
Global/Session | 连接条件下推开关。取值范围如下:
| |
loose_in_predicate_conversion_threshold | Global | IN谓词转JOIN功能控制开关。 当SQL语句的IN列表中的元素个数大于或等于该参数值时,SQL语句进行转换,将IN谓词转换为JOIN。 取值范围:0~999999。默认值:5000。 说明 当该参数设置为0时,表示关闭该功能。 |
loose_join_elimination_mode | Global | LEFT JOIN(左连接)消除功能控制开关。取值范围:
|
loose_join_predicate_pushdown_opt_mode | Global | 用于控制在何种节点上开启连接条件下推功能。取值范围如下:
|
loose_having_cond_pushdown_mode | Global | 控制在何种节点上开启条件下推(HAVING to WHERE)功能。取值范围如下:
|
loose_derived_cond_pushdown_mode | Global | 从条件下推(WHERE条件下推派生表)控制开关。取值范围:
|
loose_subquery_cond_pushdown_mode | Global | 从条件下推(WHERE子句下推至IN子查询)下推功能的控制开关。取值范围如下:
|
loose_join_cond_push_into_derived_mode | Global | 从条件下推(连接条件下推至物化派生表)下推功能的控制开关。取值范围如下:
|
loose_predicate_deduce_mode | Global | 谓词推导(条件下推增强)功能控制开关。取值范围如下:
|
loose_plan_cache_type | Session | 计划缓存 (Auto Plan Cache)模式。取值如下:
|
loose_plan_cache_expire_time | Session | 计划缓存 (Auto Plan Cache)中的执行计划超过该时间没有被命中,内存会被回收。单位为秒。 取值范围:0~4294967295。默认值:1800。 |
loose_auto_plan_cache_pct_threshold | Session | 优化时间占语句整体执行时间的百分比阈值。 取值范围:0~100。默认值:20。 |
loose_auto_plan_cache_time_threshold | Session | SQL语句整体执行时间阈值。单位为微秒。 取值范围:0~18446744073709551615。默认值:400。 |
loose_auto_plan_cache_count_threshold | Session | 当 取值范围:0~18446744073709551615。默认值:512。 说明 缓存到Plan Cache中的次数阈值大于或等于 |
loose_adaptive_plans_switch | Global/Session | 自适应执行能力控制开关。取值范围如下:
|
loose_adaptive_cost_threshold_for_imci | Global/Session | 设置行列自适应执行能力分流代价阈值。 取值范围:1~18446744073709551615。默认值:50000。 说明 该参数适用的数据库引擎版本如下:
|
loose_adaptive_plans_max_time | Global/Session | 允许切换自适应执行能力的SQL语句已执行时间的最大值。即当查询语句在原计划的执行时间超过该时间后,即使触发切换计划阈值,也不再切换执行计划。 取值范围:0~1800000。默认值为500。单位为毫秒。 |
loose_adaptive_ordering_rows_threshold | Global/Session | 设置有序索引的自适应选择检查点。有效索引值越小,将越早进行自适应检查和调整。 取值范围:0~4294967295。默认值为50000。 |
loose_optimizer_switch | Global/Session | Limit Offset下推的总控制开关。其中,计算下推的子控制开关如下:
|
loose_bloom_filter_enabled | Global/Session | Bloom Filter优化开关。取值范围如下:
|
DDL优化
参数名称 | 级别 | 参数说明 |
loose_innodb_support_instant_add_column | Global | 秒级加字段功能的开关,取值范围如下:
说明 该参数适用的数据库引擎版本如下:
|
loose_innodb_polar_instant_modify_column_enable | Global | 秒级修改字段功能控制开关。取值范围如下:
说明 PolarDB MySQL版秒级修改字段功能目前处于灰度发布阶段。如需使用请前往配额中心,根据配额ID |
loose_innodb_polar_instant_modify_column_max_times | Global | 设置单表允许的秒级修改字段最大次数。 取值范围:1~64。 默认值:16。 |
loose_innodb_support_instant_modify_charset | Global | 秒级修改列字符集功能控制开关。取值范围如下:
说明 集群版本需为以下版本之一:
|
loose_innodb_polar_parallel_ddl_threads | Session | 控制每一个DDL操作的并行线程数。取值范围:1~16。默认值:1,即执行单线程DDL。 若该参数值不为1,当执行创建二级索引操作时将自动开启并行DDL。 说明 该参数取值为1的时候,系统默认开启2个并行线程数。 |
innodb_parallel_build_primary_index | Global | 控制是否允许创建主键索引时使用并行DDL功能。取值范围如下:
说明 该参数当前处于灰度发布阶段。如有需求,请前往配额中心,在配额名称为PolarDB并行创建主键试用白名单的操作列,单击申请,申请试用。 |
loose_innodb_polar_use_sample_sort | Session | sample sort优化功能开关,取值范围如下:
|
loose_innodb_polar_use_parallel_bulk_load | Session | 并行bulk load优化功能开关,取值范围如下:
|
loose_innodb_polar_ddl_build_index_readahead | Global | DDL预读功能的开关,取值范围如下:
|
loose_innodb_polar_ddl_build_index_readahead_page_num | Global | DDL预读的page数量,一个page大小是16k。 取值范围:32~256。默认值:64。 |
loose_innodb_polar_ddl_async_io | Global | DDL异步IO功能开关。取值范围如下:
|
loose_innodb_polar_parallel_merge_ways | Session | 设置建立索引过程中归并排序的路数。 取值范围:2~16。默认值:2,表示数据库默认为二路归并排序。当该参数值大于2时,表示开启多路归并排序。 |
loose_innodb_flush_pages_using_space_id | Global | Faster TRUNCATE/DROP TABLE功能开关。取值范围如下:
说明 PolarDB MySQL版集群版本需为5.7版本且小版本为5.7.1.0.21或以上。 |
loose_polar_nonblock_ddl_mode | Session | Nonblock DDL功能开关。取值范围如下:
|
loose_polar_nonblock_ddl_retry_times | Session | 设置获取MDL-X锁超时重试的次数。取值范围:0~31536000。默认值:0(由参数 说明 该参数值建议设置为4194304。 |
loose_polar_nonblock_ddl_retry_interval | Session | 设置获取MDL-X锁超时重试的时间间隔。 取值范围:0~31536000。单位为秒。默认值:6。 |
loose_polar_nonblock_ddl_lock_wait_timeout | Session | 设置获取MDL-X锁超时的时间。 取值范围:1~31536000。单位为秒。默认值:1。 |
loose_innodb_bulk_load_page_grained_redo_enable | Global | DDL物理复制优化功能开关,取值范围如下:
|
loose_polar_support_mdl_sync_preemption | Session | 抢占式DDL功能开关。取值范围如下:
|
loose_polar_mdl_sync_preempt_after_wait_second | Global | 设置同步MDL锁阻塞时,等待超时的时间。到达此时间还未成功同步MDL锁,则开始抢占线程。 取值范围:1~31536000。默认值:10。 |
loose_polar_enable_explain_ddl | Global | EXPLAIN DDL功能开关。取值范围如下:
|
loose_polar_max_collect_thd_num_in_explain_ddl | Global | 控制收集的潜在MDL阻塞线程的数目。 取值范围:1~512,默认值:16。 |
loose_polar_performance_schema | Global | 控制是否启用Polar Performance Schema功能。取值:
说明 您需要在控制台上将loose_polar_performance_schema参数设为 |
performance_schema_max_thread_instances | Global | 配置Polar Performance Schema监控的最大线程数。取值范围:-1~65536。取值为-1时,表示自适应。 说明 该参数已进行调优,不建议您自行修改。 |
performance_schema_max_metadata_locks | Global | 配置Polar Performance Schema监控的最大MDL锁数。取值范围:-1~1048576。取值为-1时,表示自适应。 说明 该参数已进行调优,不建议用户自行修改。 |
loose_recycle_bin | Global/Session | 表回收站功能开关。取值范围如下:
|
loose_recycle_scheduler | Global | 回收站的异步清理任务线程开关。取值范围如下:
|
loose_recycle_bin_retention | Global | 回收站内数据的最长保留周期。取值范围:86400~1209600(即14天),单位为秒。默认值为604800(即7天)。 重要 回收站清理任务线程状态如下:
|
Binlog管理
参数名称 | 级别 | 参数说明 |
loose_enable_large_trx_optimization | Global | 开启或关闭Binlog大事务优化机制。取值范围如下:
说明 该参数修改后立即生效,无需重启集群。 |
loose_binlog_large_trx_threshold_up | Global | Binlog大事务优化的阈值。开启Binlog大事务优化机制后,当单个事务产生的Binlog大小超过该阈值时,将采用优化的Binlog提交方式。 取值范围:10 MB~300 GB。默认值:1 GB。 说明 该参数修改后立即生效,无需重启集群。 |
高并发优化
参数名称 | 级别 | 参数说明 |
loose_ccl_mode | Global | 超出并发数量时,SQL语句的行为。取值如下:
说明 仅PolarDB MySQL版 8.0版本支持该参数。5.6和5.7版本直接进行排队等待。 |
loose_ccl_max_waiting_count | Global | 当 取值范围:0~65536。默认值为0。 说明 仅PolarDB MySQL版 5.7和8.0版本支持该参数。 |
loose_hotspot | Global | 热点行优化功能总开关。取值范围如下:
|
loose_thread_pool_enabled | Global | 是否开启线程池功能。取值:
说明
|
loose_thread_pool_size | Global | 线程池中线程组的数量。取值范围与集群中主节点规格的CPU核数有关。 取值范围:DBNodeClassCPU~DBNodeClassCPU*10。默认值:DBNodeClassCPU*2。 说明
举例如下:
|
loose_thread_pool_high_prio_mode | Global | 线程池高优先级队列模式。 取值范围如下:
说明 仅PolarDB MySQL版5.6和5.7版本支持该参数。 |
loose_thread_pool_high_prio_tickets | Global | 高优先级队列的单次门票数。 取值范围:0~4294967295。默认值:4294967295。 说明 仅PolarDB MySQL版5.6和5.7版本支持该参数。 |
loose_thread_pool_idle_timeout | Global | 释放线程池空闲线程的时间阈值,超过此时间,没有服务任何请求的空闲线程将被释放。 取值范围:0~31536000。默认值:60。单位:秒。 说明 仅PolarDB MySQL版5.6和5.7版本支持该参数。 |
loose_thread_pool_oversubscribe | Global | 每个线程组中允许的活跃线程的数量。 取值范围:1~1000。默认值:20。 活跃线程是指正在执行SQL语句的线程,但是不包括以下两种情形:
|
loose_thread_pool_stall_limit | Global | 判断线程池进入拥塞状态的时间阈值。 当线程池进入拥塞状态时,系统会创建新的线程来服务SQL。 取值范围:1~18446744073709551615。默认值:10。单位:毫秒。 说明 数据库引擎MySQL 5.6版本默认值为30毫秒。 |
loose_bypass_thread_pool_ips | Global | 配置不受线程池限制的客户端IP地址。即便线程池被占满时,也可以执行SQL来进行一些管理操作。 配置示例:
说明 仅PolarDB MySQL版8.0.1版本且小版本为8.0.1.1.19支持该参数。 |
loose_bypass_thread_pool_check_ignore_proxy | Global | 配置高优先级别的数据库账号。配置后这些账号的请求将会被放到线程池的高优先级队列中,优先进行处理。 配置示例:
说明
|
loose_thread_pool_high_priority_users | Global | 配置DDL的线程池超时时间阈值。超过此时间后,将DDL标记为超时状态,系统会创建新的线程来处理请求。 取值范围:0~864000。默认值:600。单位:秒。 说明 仅PolarDB MySQL版8.0.1版本且小版本为8.0.1.1.19支持该参数。 |
loose_thread_pool_mark_ddl_thread_timeout_sec | Global | 配置DDL的线程池超时时间阈值。超过此时间后,将DDL标记为超时状态,系统会创建新的线程来处理请求。 取值范围:0~864000。默认值:600。单位:秒。 说明 仅PolarDB MySQL版8.0.1版本且小版本为8.0.1.1.19支持该参数。 |
loose_thread_pool_mark_ddl_thread_timeout_immediately | Global | 在线程池处于高负载状态,造成低优先级队列发生堆积时,是否立刻将DDL标记为超时状态,此时系统会创建新的线程来处理请求。该参数适用于需要经常批量DDL的业务场景中。 取值范围:
说明 仅PolarDB MySQL版8.0.1版本且小版本为8.0.1.1.19支持该参数。 |
loose_innodb_polar_blink_tree | Global | B-tree并发控制优化机制控制开关。取值范围如下:
|
分区表
闪回查询
参数名称 | 级别 | 参数说明 |
loose_innodb_backquery_enable | Global | 打开或者关闭闪回查询功能。取值:
说明
|
loose_innodb_backquery_window | Global | 闪回查询支持的时间长度。 取值范围:1~604800。默认值:86400。单位:秒。 |
loose_innodb_backquery_capacity_limit | Global | 闪回查询支持的undo日志容量。当undo日志容量大于或等于该值时,将会缩短闪回查询支持的时间长度。 取值范围:100~200000000。默认值:100000000。单位:MB。 |
冷数据归档
参数名称 | 级别 | 参数说明 |
loose_csv_oss_buff_size | Session | 当前一个OSS线程所占用的内存大小。默认值:134217728。单位:Byte。 取值范围:4096~134217728。 |
loose_csv_max_oss_threads | Global | 当前允许运行的OSS线程数量。 取值范围:1~100。默认值为1。单位:个。 |
loose_max_oss_outfile_threads | Session | PolarDB可以同时启动的OSS OUTFILE线程数量。取值范围:1~100。默认值为1。单位:个。 您可以使用 说明 集群版本为PolarDB MySQL版8.0.1.1.38及以上的版本时,该参数已失效。 |
loose_oss_outfile_buffer_size | Global | 单个OSS OUTFILE线程可以占用的内存大小。一般情况下,占用的内存越大,导出速度越快。 取值范围:102400~536870912。默认值:134217728。单位:Byte。 |
数据清理
参数名称 | 级别 | 参数说明 |
loose_innodb_enable_ttl_purge | Global | 是否开启数据清理(TTL)开关。 取值范围如下:
|
loose_innodb_ttl_min_interval | Global | 设置数据过期时间时,允许的最小时间。 取值范围:0~4294967295。默认值为100。默认单位为秒。 |
loose_innodb_ttl_purge_thread | Global | 数据清理(TTL)过期数据的线程数。修改后需重置 取值范围:2~32。默认值为4。单位为个。 |
loose_innodb_ttl_cluster_index_purge_batch_size | Global | 数据清理(TTL)时,扫描主键的数量。 取值范围:10000~1000000。默认值为10000。单位为个。 |
loose_innodb_ttl_index_purge_batch_size | Global | 数据清理(TTL)时,扫描TTL列索引的数据。 取值范围:500~1000000。默认值为500。单位为个。 |
loose_innodb_ttl_purge_start_hour | Global | 数据清理(TTL)开始的时间。不得超过 取值范围为0~23。默认值为0。单位为秒。 |
loose_innodb_ttl_purge_end_hour | Global | 数据清理(TTL)数据结束的时间。不得小于 取值范围为0~23。默认值为0。单位为秒。 |
其他功能
参数名称 | 级别 | 参数说明 |
loose_innodb_polar_log_rdma_transfer | Global | RDMA日志传输功能开关,取值范围:
|
loose_partial_result_cache_enabled | Global/Session | Partial Result Cache(PTRC)功能开关。取值范围如下:
|
loose_partial_result_cache_cost_threshold | Global/Session | Partial Result Cache(PTRC)的代价阈值。当单个查询的整体cost超过该阈值时,才使用PTRC。 取值范围:0~18446744073709551615。默认值:10000。 |
loose_partial_result_cache_check_frequency | Global/Session | 触发Partial Result Cache(PTRC)动态反馈检测的频率,当累计cache miss的次数达到该值时触发一次检测。 取值范围:0~18446744073709551615。默认值:200。 |
loose_partial_result_cache_low_hit_rate | Global/Session | Partial Result Cache(PTRC)命中率的低水位阈值。当优化器估算的命中率高于此值时才考虑使用PTRC,如果已使用PTRC,动态反馈机制中发现真实命中率低于该值时,将直接放弃继续使用PTRC。 取值范围:0~100。默认值:20。 |
loose_partial_result_cache_high_hit_rate | Global/Session | Partial Result Cache(PTRC)命中率的高水位阈值。当内存使用达到上限并且命中率高于此值时,内存缓存变更为文件存储缓存,已缓存的数据也会转存至文件中。 取值范围:0~100。默认值:70。 |
loose_partial_result_cache_max_mem_size | Global/Session | 单个查询中Partial Result Cache(PTRC)累积内存使用量。一个查询内部可能有多个PTRC,多个PTRC累计使用的内存不能超过该值。 取值范围:0~18446744073709551615。默认值:67108864。单位:Byte。 |