计算层变量

PolarDB-X是存储计算分离架构,这里主要罗列了常见CN变量(其中部分变量控制台可配置)。

变量名

是否重启

默认值

范围

备注

PLAN_CACHE

FALSE

[TRUE|FALSE]

计划缓存的开关。

ENABLE_RECYCLEBIN

FALSE

[TRUE|FALSE]

开启回收站的开关。

SHOW_TABLES_CACHE

FALSE

[TRUE|FALSE]

是否对show tables结果做缓存。

MERGE_CONCURRENT

FALSE

[TRUE|FALSE]

全并行执行开关,主要影响DDL和全下推简单查询的并行执行度。

MERGE_UNION

FALSE

[TRUE|FALSE]

默认关闭,打开意味着物理SQL不做union优化,且将串行执行下推的物理SQL。

MERGE_UNION_SIZE

-1

[0-10000]

通过union合并物理SQL的数量,默认结合连接池可用连接数自适应推导。

TABLE_META_CACHE_EXPIRE_TIME

300

[0-180000]

元数据缓存过期时间。

COLUMN_LABEL_INSENSITIVE

TRUE

[FALSE|TRUE]

返回列大小写是否敏感。

RECORD_SQL

TRUE

[FALSE|TRUE]

审计日志开关。

SOCKET_TIMEOUT

900000

[0~3600000]

物理SQL超时时间。

TRANSACTION_POLICY

TSO

[XA|TSO|TSO_READONLY]

事务策略。

SHARE_READ_VIEW

FALSE

[TRUE|FALSE]

共享ReadView开关。

ENABLE_TRX_SINGLE_SHARD_OPTIMIZATION

TRUE

[TRUE|FALSE]

事务单分片优化开关。

GET_TSO_TIMEOUT

10

[1-1800]

获取TSO时间戳超时时间。

MAX_TRX_DURATION

28800

[1-180000]

事务物理超时时间。

TRANSACTION_ISOLATION

REPEATABLE-READ

[READ-UNCOMMITTED|READ-COMMITTED|REPEATABLE-READ|SERIALIZABLE]

事务隔离级别。

GROUP_CONCURRENT_BLOCK

TRUE

[TRUE|FALSE]

非MPP模式下分库级别执行策略。

SEQUENTIAL_CONCURRENT_POLICY

FALSE

[TRUE|FALSE]

非MPP模式下单并发执行策略。

DML_SKIP_DUPLICATE_CHECK_FOR_PK

TRUE

[TRUE|FALSE]

DML过程中是否跳过主键的冲突检查。

DML_SKIP_CRUCIAL_ERR_CHECK

FALSE

[TRUE|FALSE]

DML过程中是否允许有DML报错的事务继续提交。

DML_USE_RETURNING

TRUE

[TRUE|FALSE]

是否使用returning优化。

BROADCAST_DML

FALSE

[TRUE|FALSE]

是否允许广播表的写入不走分布式事务。

SEQUENCE_STEP

10000

[1-10000000]

SEQUENCE步长,默认为10万。

MERGE_DDL_TIMEOUT

0

[1-10000000]

DDL物理连接超时时间,默认是0,不超时。

MERGE_DDL_CONCURRENT

FALSE

[FALSE|TRUE]

DDL是否采用全并行模式, 默认库级并发。

SLOW_SQL_TIME

1000

[1-180000]

慢SQL阈值。

LOAD_DATA_BATCH_INSERT_SIZE

1024

[1-180000]

LOAD DATA每次batch insert的记录条数。

LOAD_DATA_CACHE_BUFFER_SIZE

60

[1-180000]

LOAD DATA缓存大小,默认60 MB。主要用途为流控。

MAX_ALLOWED_PACKET

16777216

[4194304-33554432]

最大包大小。

KILL_CLOSE_STREAM

FALSE

[FALSE|TRUE]

是否开启物理连接流式早停功能。

ALLOW_SIMPLE_SEQUENCE

FALSE

[FALSE|TRUE]

是否允许使用simple sequence。

MAX_PARAMETERIZED_SQL_LOG_LENGTH

5000

[1-1000000]

参与参数化SQL日志打印的最大长度。

FORBID_EXECUTE_DML_ALL

TRUE

[TRUE|FALSE]

是否禁止全表删除/更新。

GROUP_SEQ_CHECK_INTERVAL

60

[1-36000]

检查插入显式值的周期/间隔,单位秒。

JOIN_BLOCK_SIZE

300

[1-100000]

在非动态裁剪下BKAJOIN执行时的IN Values个数。

LOOKUP_JOIN_MAX_BATCH_SIZE

6400

[1-100000]

BKAJOIN执行时的最大IN Values个数。

LOOKUP_JOIN_MIN_BATCH_SIZE

100

[1-100000]

BKAJOIN执行时的最小IN Values个数。

PURGE_TRANS_INTERVAL

300

[1-180000]

事务日志清理间隔。

PURGE_TRANS_BEFORE

1800

[1-180000]

清理多久之前的事务日志。

ENABLE_BACKGROUND_STATISTIC_COLLECTION

TRUE

[TRUE|FALSE]

是否允许统计数据采集。

GENERAL_DYNAMIC_SPEED_LIMITATION

-1

[-1-10000000]

数据回填、校验动态的限速,-1为默认限制,表示1w行每秒。

PARALLELISM

-1

[1-1024]

单机并行的并行度,默认是由规格推导出来。

LOGICAL_DB_TIME_ZONE

SYSTEM

[SYSTEM|±HH:mm]

数据库时区。

MPP_PARALLELISM

-1

[1-1024]

MPP执行模式的并发度,默认是由规格推导出来。

DATABASE_PARALLELISM

0

[0-1024]

单个查询在一个DN上允许同时下发SQL的数量,用户计算Scan的并发度。

POLARDBX_PARALLELISM

0

[0-1024]

单个查询在一个CN允许的最大并发度, 默认是CPU核数。

MPP_METRIC_LEVEL

3

[0|1|2|3]

计算过程中统计信息收集程度,级别越高说明收集粒度越细。

ENABLE_COMPLEX_DML_CROSS_DB

TRUE

[TRUE|FALSE]

是否支持跨库复杂DML。

PER_QUERY_MEMORY_LIMIT

-1

[-1-9223372036854775807]

查询级内存池大小限制,默认是全局连接池的三分之一。

ENABLE_SPILL

FALSE

[FALSE|TRUE]

临时表落盘的开关。

CONN_POOL_MIN_POOL_SIZE

20

[0-60]

物理分库链接数最小值。

CONN_POOL_MAX_POOL_SIZE

60

[1-1600]

物理分库链接数最大值。

CONN_POOL_MAX_WAIT_THREAD_COUNT

0

[-1-8192]

单分库最大等待建连数(DRUID)。

CONN_POOL_IDLE_TIMEOUT

30

[1-60]

物理空闲链接超时时间。

CONN_POOL_BLOCK_TIMEOUT

5000

[1000-60000]

物理连接池获取连接的最大等待时间。

CONN_POOL_XPROTO_MAX_POOLED_SESSION_PER_INST

512

[1-8192]

单个存储节点最大缓存会话数(私有协议)。

XPROTO_MAX_DN_CONCURRENT

500

[1-8192]

单个存储节点最大并发请求数(私有协议)。

XPROTO_MAX_DN_WAIT_CONNECTION

32

[1-8192]

单个存储节点最大请求等待数(私有协议)

MERGE_SORT_BUFFER_SIZE

2048

[1024-81920]

TableScan层做归并排序使用的缓存大小,默认2 MB。

WORKLOAD_TYPE

[AP|TP]

是否指定查询的workload,默认基于代价智能识别负载。

EXECUTOR_MODE

[MPP|TP_LOCAL|AP_LOCAL]

是否指定查询的执行模式,默认基于workload选择执行模式。

ENABLE_MASTER_MPP

FALSE

[TRUE|FALSE]

是否在主实例上开启MPP能力。

LOOKUP_JOIN_BLOCK_SIZE_PER_SHARD

50

[1-100000]

在裁剪下BKAJOIN执行时的单分片约定的IN Values个数。

ENABLE_RUNTIME_FILTER

TRUE

[TRUE|FALSE]

Runtime Filter的开关。

FEEDBACK_WORKLOAD_AP_THRESHOLD

FALSE

[TRUE|FALSE]

针对AP查询的HTAP FEEDBACK开关。

FEEDBACK_WORKLOAD_TP_THRESHOLD

FALSE

[TRUE|FALSE]

针对TP查询的HTAP FEEDBACK开关。

MASTER_READ_WEIGHT

-1

[0-100]

查询流量按照(100-MASTER_READ_WEIGHT)设置比例路由给只读DN。

SHOW_ALL_PARAMS

FALSE

[TRUE|FALSE]

是否显示SHOW全部变量。

FORCE_READ_OUTSIDE_TX

FALSE

[TRUE|FALSE]

事务内是否在一个分库上强制开启多个连接。

ENABLE_COROUTINE

FALSE

[TRUE|FALSE]

是否开启wisp协程。

TRUNCATE_TABLE_WITH_GSI

FALSE

[TRUE|FALSE]

是否允许truncate包含GSI的表。

DDL_ON_GSI

FALSE

[TRUE|FALSE]

是否允许直接在GSI表做DDL。

DML_ON_GSI

FALSE

[TRUE|FALSE]

是否允许直接在GSI表做DML。

ENABLE_HASH_JOIN

TRUE

[TRUE|FALSE]

优化查询计划过程中是否与允许HashJoin节点的生成。

ENABLE_BKA_JOIN

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许BKAJoin节点生成。

ENABLE_NL_JOIN

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许NLJoin节点生成。

ENABLE_SEMI_NL_JOIN

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许将SemiJoin转成NLJoin来实现。

ENABLE_SEMI_HASH_JOIN

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许将SemiJoin转成HashJoin来实现。

ENABLE_SEMI_BKA_JOIN

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许将SemiJoin转成BKAJoin来实现。

ENABLE_SEMI_SORT_MERGE_JOIN

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许将SemiJoin转成MergeJoin来实现。

ENABLE_MATERIALIZED_SEMI_JOIN

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许将SemiJoin转成MaterializedJoin来实现。

ENABLE_SEMI_JOIN_REORDER

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许将SemiJoin参与CBO Reorder优化。

ENABLE_HASH_AGG

TRUE

[TRUE|FALSE]

查询计划过程中是否允许生成HashAgg节点。

ENABLE_PARTIAL_AGG

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许将Agg拆分成二阶段来实现。

ENABLE_SORT_AGG

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许生成SortAgg节点生成。

ENABLE_PUSH_PROJECT

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许Project PushDown。

ENABLE_PUSH_JOIN

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许Join PushDown。

ENABLE_PUSH_AGG

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许Agg PushDown。

ENABLE_CBO_PUSH_AGG

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许Agg透传Join。

ENABLE_PUSH_SORT

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许Sort PushDown。

ENABLE_STATISTIC_FEEDBACK

TRUE

[TRUE|FALSE]

是否支持统计信息修正的Feedback。

ENABLE_CBO_PUSH_JOIN

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许Join透传优化。

ENABLE_SORT_JOIN_TRANSPOSE

TRUE

[TRUE|FALSE]

优化查询计划过程中是否允许Sort透传Join。

CHUNK_SIZE

1024

[1-10240]

设置执行器每次计算的批次大小。

ENABLE_SORT_MERGE_JOIN

TRUE

[TRUE|FALSE]

优化查询计划过程中是否禁止MergeJoin节点生成。

ENABLE_BKA_PRUNING

TRUE

[TRUE|FALSE]

是否开启BKAJoin的裁剪功能。

ENABLE_SPM

TRUE

[TRUE|FALSE]

是否开启执行计划管理。

ENABLE_EXPRESSION_VECTORIZATION

TRUE

[TRUE|FALSE]

是否开启表达式的向量化计算。

FORCE_DDL_ON_LEGACY_ENGINE

TRUE

[TRUE|FALSE]

是否启用新DDL引擎。

PURE_ASYNC_DDL_MODE

FALSE

[TRUE|FALSE]

是否以非阻塞的形式执行DDL任务,开启意味着客户端执行DDL后立即返回,通过show [full] ddl查看执行的情况。

DDL_JOB_REQUEST_TIMEOUT

90000

[1-9223372036854775807]

设置DDL执行的最大超时时间,默认是25天。

LOGICAL_DDL_PARALLELISM

1

[1-10240]

配置逻辑DDL执行的并发度,设置为1意味着是串行执行DDL任务。

ENABLE_BROADCAST_RANDOM_READ

TRUE

[TRUE|FALSE]

是否开启广播表随机读优化。

STORAGE_DELAY_THRESHOLD

16777216s

[0-16777216]

查询过程中CN感知DN的延迟程度。如果延迟超过设置阈值,则路由给只读DN的只读流量会根据DELAY_EXECUTION_STRATEGY参数的设置策略执行。

DELAY_EXECUTION_STRATEGY

CONTINUE_TO_SLAVE

[CONTINUE_TO_SLAVE | CHANGE_TO_MASTER | THROW_EXCEPTION]

当出现只读DN延迟超过阈值情况时,可设置如下三个取值:

  • CONTINUE_TO_SLAVE:路由给只读DN的只读流量可继续路由给该延迟超过阈值的只读DN;

  • CHANGE_TO_MASTER:只读流量会优先路由到延迟正常的只读DN,若所有只读DN延迟都超过阈值,则将流量路由到主实例的DN;

  • THROW_EXCEPTION:若所有只读DN延迟都超过阈值,路由给只读DN的查询会直接报错。

STORAGE_BUSY_THRESHOLD

100

[0-16777216]

当有多个只读DN时,如果某个只读DN上的活跃线程数超过设置阈值,则认为当前DN处于繁忙状态,只读流量路由时会避开该只读DN。如果所有的只读DN都处于繁忙状态,那么只读流量会随机路由给一个只读DN。

ENABLE_CONSISTENT_REPLICA_READ

TRUE

[TRUE|FALSE]

一致性读需求的开关项。

TRUE:路由给只读DN的流量可以满足一致性读的需求,读到已提交最新鲜的数据。

FALSE:路由给只读DN的流量读取数据的新鲜程度依赖于主备之间的同步延迟。

SUPPORT_INSTANT_ADD_COLUMN

OFF

[ON|OFF]

秒级加字段(Instant Add Column)功能的开关,通过SET GLOBAL语句开启。

ENABLE_STATEMENTS_SUMMARY

true

[true|false]

SQL聚合开关。

STATEMENTS_SUMMARY_PERCENT

1

[0-100]

SQL聚合百分比。