作为一款“多模融合”的开源数据库,KWDB 旨在为用户提供“灵活快速、可靠易用“的操作体验。因此,KWDB的一大任务就是:简化数据库集群配置。
为避免每个节点单独编写配置文件或者重启中断服务,KWDB 跳出传统的配置文件方式,采用了启动参数和集群参数组合的方式来控制数据库集群。本文就带领大家一起快速了解 KWDB 的集群参数。
根据参数使用场景和生效范围,KWDB的参数分为三类:启动参数、环境变量和实时集群参数。
✅ 启动参数
启动参数是数据库实例级别的参数,控制数据库单个服务的行为。
此类参数只在数据库实例启动时一次性读取,一旦发生修改,需要重启数据库服务才能生效。
参数可以在启动命令中一次性传递,也可以通过维护系统服务如systemd 来持久化。
✅ 环境变量
环境变量是操作系统级别的参数,控制用户或者系统级别下所有数据库实例的行为。
此类参数只在数据库进程启动时一次性读取,一旦发生修改,需要重启数据库服务才能生效。
参数可以在系统或用户级 shell 配置文件中配置,如 .bashrc 或者 .bash_profile,也可以在系统服务如 systemd 中进行配置。
✅ 实时集群参数
实时集群参数是数据库集群级别的参数,控制同一集群下所有数据库实例的行为。
此类参数实时生效并自动广播至集群每个节点,不需要重启任何数据库服务。
参数通过 SQL 语句进行修改,会写入系统表进行持久化。
以下为三类参数的详细说明。
启动参数包括通用、网络、安全、日志等类型参数,下面将按照类型划分,对参数进行解释。开始前须知:
很多参数都有默认值,可以通过显式指定的方式来覆盖默认值。因为指定值不是持久化的操作,每次重新启动节点时都需要重新配置指定值。唯一的例外是 --join 参数,--join 参数的指定值将存储在节点的数据文件中,KWDB 推荐每次启动时重复配置,以便在数据文件丢失时节点也能够加入集群并进行恢复。
启动参数配置需要重启系统后才能生效。
✅ 通用参数
Flag |
描述 |
---|---|
--background |
设置后台运行。 注意:--background适用场景为短时间的服务运行和测试环境。目前由于无法从当前终端完全分离,不建议在长时间的服务运行中使用,此时推荐使用服务管理器或是类似于daemon(8)的工具。 |
--cache |
内存当中的缓存总大小,多个物理存储设备共享使用。Flag值可以为准确的内存大小值(单位为bytes),或是带小数点的十进制数值(转换为百分比数值),或是百分比值: --cache=.25 --cache=25% --cache=1000000000 ----> 1000000000 bytes --cache=1GB ----> 1000000000 bytes --cache=1GiB ----> 1073741824 bytes 注意:如果使用带%的格式,注意转义%保证能够正常识别,例如在某些配置文件当中%可能被识别为注解符,因此推荐使用带小数点的十进制数值。 默认值为128MiB。默认值的设置是基于本地部署集群的场景考虑,在实际生产环境中,推荐25%甚至更高。 |
--external-io-dir |
使用本地节点目录或NFS驱动器执行备份和恢复操作时,使用本地文件访问路径作为前缀的外部IO文件夹路径。如果设置为disabled,则备份和恢复使用本地节点目录,NFS驱动被禁止。 默认值: 第一个store配置的extern子目录 用户可以对extern目录进行文件符号连接,以达到不用重启节点就能够变更--extern-io-dir的目的。 |
--external-io-disable-http |
访问外部数据时禁用HTTP |
--external-io-disable-implicit-credentials |
在访问外部数据时禁用隐式凭证 |
--experimental-dns-srv |
启用后,节点将尝试从 DNS 中获取每个使用 --join 指定的名称的 SRV 记录。如果找到有效的 SRV 记录,则使用该记录的信息,而不是进行常规的 DNS A/AAAA 查找。此功能为实验功能,以后的版本可能会被移除或修改。 |
--extra-startup-item |
额外的启动项,用于设置启动时的 ME和/或 AE。 |
--listening-url-file |
节点成功启动的时候对于节点的SQL connection URL除了输出到标准输出以外,还将输出到指定的文件当中。 适用于--port=0,即自动分配未使用的端口,方便识别节点的端口。 |
--max-disk-temp-storage |
允许超过--max-sql-memory指定内存限制的查询额外使用的临时存储空间的最大硬盘空间大小,允许JOINS、排序和其他内存密集型SQL操作缓存中间结果。该Flag的值可以是百分数或是准确的值(以byte为单位),例如.25、25%、500GB、1TB、1TiB。 注意: 如果使用%符号,转义%需要保证能够正常识别,在某些配置文件中%可能被识别为注解符,因此推荐使用带小数点的十进制数值。KWDB不会检查硬盘是否剩有该Flag值对应的空间大小,因此务必保证硬盘空间充足。 这些临时文件将存储在--temp-dir对应文件夹当中。 |
--max-offset |
一个集群允许的最大时间偏移值,如果观测到的时间偏移超过该阈值,服务器将崩溃,以最大程度的减少读取到不一致数据的可能性,增加该值将增加故障恢复的时间以及基于不确定性读的重启的频率。 注意:该值在集群中的所有节点必须保持一致,且在rolling upgrade时不允许改变。更新该值需要停止集群中的所有节点,并在重启集群时统一指定新值。 默认值:500ms |
--max-sql-memory |
SQL查询需要缓存的临时数据所能使用的最大内存空间。包括准备好的查询和在查询执行期间中间数据行。该值可以是百分数或是准确的值(以byte为单位),例如: --max-sql-memory=.25--max-sql-memory=25%--max-sql-memory=10000000000 ----> 1000000000 bytes--max-sql-memory=1GB ----> 1000000000 bytes--max-sql-memory=1GiB ----> 1073741824 bytes 这些临时文件将存储在--temp-dir对应文件夹当中。 注意:如果使用带%的格式,转义%需要保证能够正常识别,在某些配置文件当中%可能被识别为注解符,推荐使用带小数点的十进制数值。 |
--pid-file |
节点准备好接受连接时,将进程ID输出到指定的文件当中,若不指定该值,则不输出进程ID内容。 |
--store-s |
存储数据库数据的存储设备路径,同时可以指定设备属性和空间大小。若使用多设备存储,则使用方式如下: --store=/mnt/ssd01 --store=/mnt/ssd02 更多详细信息,请参阅下面的store。 |
--temp-dir |
节点临时数据存储位置,用户可以在节点启动信息有相关内容输出。 默认值:第一个配置的store的子目录。 |
--attrs |
有序的、由冒号分隔的节点属性列表。节点属性是指定机器能力的任意字符串。机器能力可能包括特殊的硬件或核心数量(例如,"gpu"、"x16c")。 |
--thread-pool-size |
AE 执行器执行线程池默认大小,用于执行预计算、发布订阅任务。默认值10,取值范围[1-1024] |
--task-queue-size |
AE默认执行线程池任务队列大小,默认值1024,取值范围[1-1024] |
--cgroup-user |
资源占用限制,默认值kaiwudb |
--import-filename --import-password --import-path |
导入文件的名称、文件的解压密码,文件路径 |
1、网络参数
Flag |
描述 |
---|---|
--advertise-addr |
节点使用的IP地址或hostname,供其他节点通过该地址进行通信。如果是hostname,则要求地址能被正常解析;如果是IP地址,则需要保证地址能被访问到。对于IPv6,请使用[...]表示法,例如: [::1] 或 [fe80::f6f2:::] 参数的效果取决于与--listen-addr的组合使用。例如,如果端口号与--listen-addr中使用的端口号不同,则需要端口转发。 默认值:--listen-addr的值;如果未指定 --listen-addr,默认主机名和端口为:canonical hostname(/etc/host第二列)和26257。 |
--advertise-sql-addr |
SQL 地址,该地址必须能够从客户端解析并可路由。如果未指定,系统将默认使用--sql-addr 的设置。 只指定了地址部分或端口,未指定部分将默认使用 --sql-addr 中的设置,支持使用 IPv6 地址,例如 [::1]:26257。 |
--listen-addr |
侦听来自其他节点和客户端连接的IP地址/主机名和端口。对于IPv6,请使用[...]表示法,例如:[::1] 或 [fe80::f6f2:::] 参数的效果取决于与--listen-addr的组合使用。详情请参阅集群规划-网络。 默认值:侦听所有IP地址,端口为26257;如果未指定--advertise-addr,使用canonical hostname与其他节点的通信。 |
--http-addr |
对外开放的Admin界面的IP地址或hostname。 对于IPv6,请使用[...]表示法,例如:[::1]:8080或 [fe80::f6f2:::]:8080 默认值:与--listen-addr一致,端口为8080 |
--locality |
有序的逗号分隔的键值对列表,用于描述机器拓扑结构,可能包括国家、数据中心、机架等信息,数据会自动复制以最大程度地增加每个层级的多样性。层级的顺序用于确定多样性的优先级,因此包容性更大的本地信息(例如国家)应该在包容性较小的本地信息(例如数据中心)之前。所有节点上的层级和顺序必须相同,包含更多层级比包含较少层级更好。例如--locality=country=cn,region=east,datacenter=shanghai,rack=01 |
--locality-advertise-addr |
特定地区的节点与其他节点通信的IP地址/主机名和端口。当跨多个网络运行集群时,可以使用本参数,只有本区域的网络中的节点可以访问private或local接口,而网络外部的节点则不能访问。 在这种跨多网络的情况下,可以使用--locality-advertise-addr告诉同一网络内的节点更倾向于使用private和local地址来提高性能,通过--advertise-addr提供与外部网络节点的通信。 本参数依赖于--locality,表示方法为:locality@address ,例如: [email protected]:26257 |
--clock-device |
查询当前时间时使用PTP(Precision Time Protocol)硬件时钟而不是 HLC(Hybrid Logical Clock),配置值为时钟设备,例如--clock-device=/dev/ptp0。注意,目前仅在 Linux 系统进行了测试和支持。 |
--cluster-name |
设置名称,用于验证远程节点或集群身份。该名称必须在本节点和通过 --join 指定的远程节点之间匹配。此配置可用于在节点或集群尚未初始化且尚不知道集群 ID时的额外验证。如果要在已初始化的集群中引入集群名称,可以与 --disable-cluster-name-verification 配合使用。 |
--disable-cluster-name-verification |
用于告知服务器忽略集群名称不匹配。主要用于已有集群启用集群名称验证或更改集群名称。一起使用 --cluster-name 和 --disable-cluster-name-verification后,应重新启动集群。所有节点都已更新集群名称后,就可以再次重新启动集群,并移除此标志。 |
--join-j |
节点连接集群的地址。 初始化时需要指定集群3-5个节点的地址和端口,然后执行KWDB init命令完成集群启动过程。不指定该参数时,则启动的是一个单节点集群,此时不需要执行KWDB init命令。 当需要向已有集群添加新节点的时候,使用该flag指定集群3-5个节点的地址和端口。 |
--restful-port |
RESTful端口,默认值为8080,取值范围为[0, 65535] |
--socket-dir |
接受使用在指定目录中创建的 Unix 域套接字的客户端连接。为了与 PostgreSQL兼容,生成的套接字名称的格式为 "/path/to/.s.PGSQL.NNNN",其中 NNNN 是通过 --listen-addr 配置的端口号。PostgreSQL 客户端只接受端口号和目录作为输入,并通过程序化方式构建套接字名称。例如psql -h /path/to -p NNNN。 可以通过设置KWBASE_SOCKET_DIR环境变量来指定 Unix 域套接字的目录。 |
--unencrypted-localhost-http |
限制 HTTP 连接仅限于本地,并禁用 HTTP 接口的 TLS。如果指定了 --http-addr 的主机名,系统会自动忽略。主要便于本地测试,无需在web浏览器中进行证书设置。 |
2、安全参数
Flag |
描述 |
---|---|
--certs-dir |
安全证书目录的路径,用于对安全模式部署的集群进行访问验证。 默认值:${HOME}/.KWDB-certs/ |
--insecure |
以非安全模式启动集群。 非安全模式集群的风险包括:集群对客户端是开放的,通过IP地址可以访问集群任意节点;任何非root用户能够不需要密码访问集群;包括root用户在内的所有用户能够读写集群当中的所有数据;集群节点间任何网络通讯都是非加密的,不需要任何验证。 默认值: false |
3、存储参数
--store 支持以下配置项,配置项之间通过逗号分隔,因此配置项的值应避免使用逗号。开始前须知:在生产部署环境中不适合使用内存存储。
在没有特殊复制约束的情况下,KWDB 会重新平衡副本以利用可用的存储空间。但是,在每个节点具有多个存储的3节点集群中,KWDB 不能将副本从一个存储重新平衡到同一节点上的另一存储,因为这将暂时导致该节点具有相同 range 的多个副本,由于重新平衡的机制不允许发生这种情况,在该机制下,集群会先删除目标副本,然后再在目标位置创建副本的副本。
也就是说,要允许这种跨存储区的重新平衡类型,集群必须具有4个及以上节点。这允许集群在删除源副本之前,在尚未具有该 range 副本的节点上创建副本的副本,然后将新副本迁移到原始节点中空间更大的存储中。
配置项 |
简介 |
---|---|
--store type |
如果是内存存储,则值应设置为mem,path配置项设置为空。其他情况该值应为空。 |
--store path |
存储设备路径,例如:--store=path=/mnt/ssd01,size=20GB |
--store size |
存储设备允许节点使用的最大空间大小。达到此阈值时,KWDB尝试将数据重新散布到具有可用容量的其他节点。当其他节点都使用完可用容量时,该节点将无视该限制地继续使用更多空间。一旦集群有其他新的可用空间,则该节点超出阈值的数据将转移到新的可用空间上。 该Flag的值可以是基于硬盘大小的百分数或是准确的值(以byte为单位),例如: --store=path=/mnt/ssd01,size=10000000000 ----> 10000000000 bytes --store=path=/mnt/ssd01,size=20GB ----> 20000000000 bytes --store=path=/mnt/ssd01,size=20GiB ----> 21474836480 bytes --store=path=/mnt/ssd01,size=0.02TiB ----> 21474836480 bytes --store=path=/mnt/ssd01,size=20% ----> 20% of available space --store=path=/mnt/ssd01,size=0.2 ----> 20% of available space --store=path=/mnt/ssd01,size=.2 ----> 20% of available space 默认值: 100% 若是内存存储,则该值是基于内存大小的百分数或是准确的值(以byte为单位),例如: --store=type=mem,size=20GB --store=type=mem,size=90% Note: 如果使用带%的格式,注意转义%保证能够正常识别,例如在某些配置文件当中%可能被识别为注解符,因此推荐使用带小数点的十进制数值。 |
--storage-engine |
用于指定此节点所有存储的存储引擎。可选值有 default、rocksdb 或 pebble。如果指定了 default,则使用最后一次用于写入第一个存储目录的存储引擎(参见 --store)。如果存储目录未初始化,并且指定了 default,则使用rocksdb作为默认存储引擎。 |
4、日志参数
默认情况下,系统将所有信息打印到日志文件中,不向stderr输出任何内容。
flag |
描述 |
---|---|
--log-dir |
启动日志功能并在指定的目录下记录日志。--log-dir配置为空字符串(--log-dir="")时,则关闭日志功能。 |
--log-dir-max-size |
所有日志文件大小达到一定阈值以后,KWDB将删除最老的日志。 默认值:100MiB |
--log-file-max-size |
单个日志文件大小达到一定阈值以后,KWDB将开启新的日志文件并输出日志到新文件当中。 默认值:10MiB |
--log-file-verbosity |
只有指定严重级别及以上的日志才输出到日志文件当中。例如: --log-file-verbosity=WARNING 默认值:INFO |
--logtostderr |
将指定严重级别及以上的日志输出到stderr,例如--logtostderr=ERROR 若使用该Flag时不指定配置值,则KWDB将所有严重级别的日志输出到stderr。 若配置为--logtostderr=NONE,则禁止日志输出到stderr。 |
--no-color |
是否对stderr着色,值为true或false。 值为false时,输出到stderr将基于自身严重级别进行着色。 默认值:false |
--sql-audit-dir |
安全审计日志的位置,默认情况下,SQL审核日志与KWDB生成的其他日志写入同一目录。 |
--vmodule |
用于启用文件过滤日志记录,支持通过逗号分隔的pattern=N列表指定,可能会严重影响性能。 |
对于 KWDB 命令的许多常见参数,例如 --port 和 --user,可以设置环境变量代替每次执行命令时手动制定这些参数。要查看当前的 KWDB 配置和其他环境变量,请运行 env。
如果节点在启动时使用环境变量,变量名将被打印到节点的日志中。
KWDB 优先考虑命令参数和环境变量,其优先级(从前向后依次递减)为:
命令中指定的参数
环境变量
默认值
如果既没有命令参数,环境变量,也没有默认值,KWDB 将会报错。
下表列出了目前支持配置的环境变量:
参数 |
描述 |
默认值 |
---|---|---|
KW_DATA_VERSION_VALIDATE |
版本校验,默认值为true,表示启动时进行版本校验,如果校验未通过,系统会记录版本校验失败,同时为了避免损坏数据文件会终止程序;设置为false时如果版本校验未通过,系统仍会启动程序,同时记录版本校验失败信息。 |
true |
KWBASE_CONNECT_TIMEOUT |
SQL连接超时默认值 |
"15" |
KWBASE_SQL_CLI_HISTORY |
命令历史文件 |
".kwbasesql_history" |
KWBASE_UPDATE_CHECK_URL |
版本升级检查地址 |
`https://register.kwbasedb.com/api/clusters/updates` |
KWBASE_USAGE_REPORT_URL |
错误报告上传地址 |
`https://register.kwbasedb.com/api/clusters/report` |
KWBASE_STORAGE_ENGINE |
要使用的默认存储引擎。 |
"default" |
KWBASE_CRASH_REPORTS |
崩溃报告网址 |
"https://ignored:[email protected]/sentry" |
KWBASE_TXN_HEARTBEAT_DURING_1PC |
txnHeartbeatDuring1PC定义txnHeartbeater是否应为1PC事务启动心跳循环 |
false |
KWBASE_ENFORCE_CONSISTENT_STATS |
fatalOnStatsMismatch,如果设置为true,则将统计数据不匹配转换为致命错误。 |
false |
KWBASE_ENABLE_COMPACTOR |
是否启用compactor |
true |
KWBASE_USE_TREE_TSCACHE |
使用提供的混合时钟返回一个新的时间戳缓存 |
false |
KWBASE_ENABLE_RPC_COMPRESSION |
是否启用RPC压缩 |
true |
KWBASE_SKIP_KEY_PERMISSION_CHECK |
是否禁用加密模式密钥检查 |
false |
KWBASE_DISABLE_WEB_LOGIN |
是否禁用web登录 |
false |
KWBASE_EXPERIMENTAL_LINEARIZABLE |
是否启用线性化行为 |
false |
KWBASE_ENGINE_MAX_SYNC_DURATION_FATAL |
是否启用观察到的引擎同步持续时间触发警告或致命错误 |
false |
KWBASE_SKIP_ENABLING_DIAGNOSTIC_REPORTING |
是否选择退出遥测 |
false |
KWBASE_DISTSQL_LOG_PLAN |
设置为true时,以JSON格式记录每个计划,用于调试 |
false |
KWBASE_INTERVAL_BTREE |
是否使用btree |
false |
KWBASE_REPORT_SENSITIVE_DETAILS |
是否启用未匿名化数据的报告 |
false |
KWBASE_ANNOTATE_TRACES |
是否通过调用无操作的cgo函数向golang执行跟踪器添加注释 |
false |
KWBASE_SCHEDULER_CONCURRENCY |
scheduler并发数 |
min(8*runtime.NumCPU(), 96) 和系统相关 |
KWBASE_TXN_LIVENESS_HEARTBEAT_MULTIPLIER |
指定事务活动阈值为事务心跳间隔的倍数。 |
5 |
KWBASE_RAFT_ELECTION_TIMEOUT_TICKS |
指定选举之间必须经过的Raft Tick调用数。 |
15 |
KWBASE_RAFT_LOG_TRUNCATION_THRESHOLD |
指定单个范围的Raft日志可以在至少一个追随者缺失时增长到的上限。如果所有追随者处于活跃状态,配额池负责通过确保领导者不会走得太远实现Raft日志不会无限增长。 |
4<<20 /* 4 MB */ 值为4194304 |
KWBASE_RAFT_MAX_SIZE_PER_MSG |
指定领导者在单个MsgApp中向追随者发送的Raft日志条目的最大总字节数。 |
16<<10 /* 16 KB */ 值为16384 |
KWBASE_RAFT_MAX_COMMITTED_SIZE_PER_READY |
指定节点在单个Ready中接收的已提交日志条目的最大总字节数。 |
64<<20 /* 64 MB */ 值为67108864 |
KWBASE_RAFT_MAX_INFLIGHT_MSGS |
指定领导者在未收到响应的情况下发送到追随者的“inflight”消息的数量。 |
64 |
KWBASE_BLOCK_PROFILE_RATE |
控制在阻塞概要中报告的goroutine阻塞事件的比例。 |
0 |
KWBASE_LEASE_HISTORY |
是否启用副本租约历史记录以及启用时占用的内存大小。 |
5 |
KWBASE_NOTEWORTHY_ADMIN_MEMORY_USAGE |
管理员SQL池在开始明确记录整体使用增长之前的跟踪的最小大小 |
100*1024 |
KWBASE_VEC_MAX_OPEN_FDS |
矢量化执行引擎在任何时候可以打开的文件描述符的最大数量 |
256 |
KWBASE_NOTEWORTHY_SESSION_MEMORY_USAGE |
事务或会话监视器在开始明确记录整体使用增长之前跟踪的最小大小 |
1024*1024 |
KWBASE_BASE_SQL_MEMORY_BUDGET |
每个连接预分配的内存容量 |
21504 |
KWBASE_NOTEWORTHY_SQL_MEMORY_USAGE |
客户端SQL池在开始明确记录整体使用增长之前跟踪的最小大小 |
100*1024*1024 |
KWBASE_NOTEWORTHY_CONN_MEMORY_USAGE |
连接监视器在开始明确记录整体使用增长之前跟踪的最小大小 |
2*1024*1024 |
KWBASE_NOTEWORTHY_INTERNAL_MEMORY_USAGE |
每个内部SQL池在开始明确记录整体使用增长之前跟踪的最小大小 |
1<<20 /* 1 MB */ 值为1048576 |
KWBASE_ROCKSDB_CONCURRENCY |
每个存储后台RocksDB压缩线程数 |
min(numCPU, 4) 和系统有关 |
KWBASE_MAX_ALLOCATED_UNUSED_BLOCKS |
监视器使用的字节和上游池保留的字节之间的最大差异,超过该差异后,监视器需要将字节返还给上游池。 |
10 |
KWBASE_ALLOCATION_CHUNK_SIZE |
监视器用于保留和向池释放字节的分配单位。 |
10*1024 |
KWBASE_RANDOM_SEED |
an instance of math/rand.Rand seeded |
int64随机数 |
KWBASE_PREEMPTIVE_SNAPSHOT_RATE |
发送抢占快照的速率 |
8<<20 值为8388608 |
KWBASE_RAFT_SNAPSHOT_RATE |
发送Raft启动的快照的速率 |
8<<20 值为8388608 |
KWBASE_CPUPROF_INTERVAL |
CPU 采样分析的时间间隔 |
-1 Env definition: Decimal numbers, each with optional fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". |
KWBASE_SCAN_INTERVAL |
range扫描器访问每个range的大致时间间隔。如果设置为 0,则表示禁用扫描器 |
10m |
KWBASE_SCAN_MIN_IDLE_TIME |
range扫描器在处理多个range之间的最小空闲时间,启用且设置为大于0的值时,在大型存储中扫描器可能需要花费比 ScanInterval 更长的时间来完成扫描 |
10ms |
KWBASE_SCAN_MAX_IDLE_TIME |
range扫描器在处理多个range之间的最大空闲时间。启用且设置为大于0的值时,在小型存储中,扫描器可能花费比 ScanInterval 更短的时间来完成扫描。 |
1s |
KWBASE_MEMPROF_INTERVAL |
高水位标记值重置的频率 |
1h |
KWBASE_ENGINE_MAX_SYNC_DURATION |
观察到的引擎同步持续时间超过该阈值后将触发警告或致命错误 |
10s |
KWBASE_SQL_TCP_KEEP_ALIVE |
TCP保持活跃周期 |
1m |
KWBASE_LOG_MAX_SYNC_DURATION |
配置日志最大同步持续时间,配置值应为保守估计 |
30s |
KWDB 支持通过 SET CLUSTER SETTING 语句修改集群设置,设置后立即生效。需要注意的是:
许多集群参数的设置会影响 KWDB 的内部运行机制。修改参数设置前,强烈建议明确使用 KWDB 的目的,以免因修改设置带来风险。
仅数据库 root 用户可以更改集群参数设置。
下表列出了 KWDB 支持设置的所有集群参数及默认值,也可通过 SHOW ALL CLUSTER SETTINGS 语句查看当前集群的所有参数及配置值。
参数 |
描述 |
默认值 |
类型 |
---|---|---|---|
audit.enabled |
审计开关 |
FALSE |
bool |
audit.log.enabled |
审计日志文件记录开关 |
TRUE |
bool |
cloudstorage.gs.default.key |
Google Cloud Storage操作的JSON密钥 |
- |
string |
cloudstorage.http.custom_ca |
与HTTPS存储交互时验证证书的自定义根CA,附加到系统的默认CA |
- |
string |
cloudstorage.timeout |
导入导出存储操作的超时时间 |
10m0s |
duration |
cluster.organization |
组织名称 |
- |
string |
cluster.preserve_downgrade_option |
重置前系统将禁止从指定版本自动或手动升级集群版本 |
- |
string |
cluster.secret |
集群密钥 |
6d09e190-0df9-40b7-8ee2-f5fa870f3736 |
string |
compactor.enabled |
设置为false时,系统将不再积极回收被删除数据占用的空间 |
TRUE |
bool |
compactor.max_record_age |
丢弃在设置时间内未处理的建议 |
24h0m0s |
duration |
compactor.min_interval |
压缩前等待的最小时间间隔 |
15s |
duration |
compactor.threshold_available_fraction |
可用逻辑空间的建议最小指定百分比,0表示禁用。 |
0.1 |
float |
compactor.threshold_bytes |
考虑聚合之前所需的最小预期回收逻辑空间。 |
256MiB |
int |
compactor.threshold_used_fraction |
已使用逻辑空间的建议最小指定百分比,0表示禁用。 |
0.1 |
float |
debug.panic_on_failed_assertions |
断言失败时不报告直接中止程序 |
FALSE |
bool |
default_transaction_read_only.enabled |
只读模式,false表示可以读写,true表示只能读不能写,包括DDL、DCL和其他集群设置。 |
FALSE |
bool |
diagnostics.forced_sql_stat_reset.interval |
系统刷新SQL语句统计信息的时间间隔,包括未收集的SQL语句统计信息。最大值为24小时。设置值应大于diagnostics.sql_stat_reset.interval。 |
2h0m0s |
duration |
diagnostics.reporting.enabled |
向kwbase实验室报告诊断指标 |
TRUE |
bool |
diagnostics.reporting.interval |
报告诊断数据的间隔 |
1h0m0s |
duration |
diagnostics.reporting.send_crash_reports |
发送系统崩溃和程序中止报告 |
TRUE |
bool |
diagnostics.sql_stat_reset.interval |
系统重置SQL语句统计信息的时间间隔,包括未收集的SQL语句统计信息。最大值为24小时。设置值应小于diagnostics.forced_sql_stat_reset.interva。 |
1h0m0s |
duration |
external.graphite.endpoint |
设置为非空时,系统会将服务器指标推送到指定主机:端口的Graphite或Carbon服务器。 |
string |
|
external.graphite.interval |
启用指标推送时,将指标推送到Graphite的时间间隔 |
10s |
duration |
jobs.registry.leniency |
作业执行失败后系统重新尝试调度该作业的时间间隔 |
1m0s |
duration |
jobs.retention_time |
作业完成后保留其相关记录的时间长度 |
336h0m0s |
duration |
jobs.scheduler.enabled |
开启或关闭定时任务功能。 默认开启。 |
true |
boolean |
jobs.scheduler.pace |
扫描任务表system.scheduled_jobs的频率。 默认值为60秒,设置值不能小于60s,如果设置值小于60s的情况下将采用默认值60s。 |
60s |
duration |
jobs.scheduler.max_jobs_per_iteration |
每次扫描执行的最大任务数。 默认值为10,设置为0时表示无任务数限制。 |
10 |
integer |
kv.allocator.lease_rebalancing_aggressiveness |
设置值大于1.0时,系统会更积极平衡租约负载 设置值在0和1.0之间时,系统会相对保守地进行租约负载的重新平衡 |
1 |
float |
kv.allocator.load_based_lease_rebalancing.enabled |
基于负载和延迟重新平衡range租约 |
TRUE |
bool |
kv.allocator.load_based_rebalancing |
是否基于存储之间的QPS分布重新平衡,0表示不启动,1表示重新平衡租约,2表示平衡租约和副本 |
2 |
enum |
kv.allocator.min_lease_transfer_interval |
规定租约转移以实现系统重新平衡的频率, 设置后系统不会限制从range中移除副本时执行的租约转移。 |
1s |
duration |
kv.allocator.qps_rebalance_threshold |
存储节点的QPS与平均值之间的最小分数,用于判断存储节点负载是否过高或过低 |
0.25 |
float |
kv.allocator.range_rebalance_threshold |
存储的range数与平均值的最小分数,用于判断存储节点负载是否过高或过低 |
0.05 |
float |
kv.atomic_replication_changes.enabled |
使用原子复制改动 |
TRUE |
bool |
kv.bulk_ingest.batch_size |
AddSSTable请求中有效负载的最大大小 |
16MiB |
int |
kv.bulk_ingest.buffer_increment |
BulkAdder在刷新数据之前缓冲区可尝试扩大的尺寸 |
32MiB |
int |
kv.bulk_ingest.index_buffer_size |
处理二级索引导入的BulkAdder缓冲区的初始大小 |
32MiB |
int |
kv.bulk_ingest.max_index_buffer_size |
处理二级索引导入的BulkAdder缓冲区的最大大小 |
512MiB |
int |
kv.bulk_ingest.max_pk_buffer_size |
处理一级索引导入的BulkAdder缓冲区的最大大小 |
128MiB |
int |
kv.bulk_ingest.pk_buffer_size |
处理一级索引导入的BulkAdder缓冲区的初始大小 |
32MiB |
int |
kv.bulk_io_write.concurrent_addsstable_requests |
单个存储节点在处理 AddSSTable 请求时,允许同时处理的最大请求数量 |
1 |
int |
kv.bulk_io_write.concurrent_export_requests |
单个存储节点在处理导出请求时,允许同时处理的最大请求数量 |
3 |
int |
kv.bulk_io_write.concurrent_import_requests |
单个存储节点在处理导入请求时,允许同时处理的最大请求数量 |
1 |
int |
kv.bulk_io_write.max_rate |
批量输入/输出(IO)操作向磁盘写入数据时的速率限制 |
1.0TiB |
int |
kv.bulk_io_write.small_write_size |
用于设置批量写入数据大小阈值,当数据大小低于这个阈值时,系统将以普通写入的方式执行 |
400KiB |
int |
kv.bulk_sst.sync_size |
超过设定的阈值时,系统将对非 Rocks SST的写入进行 fsync 操作,0表示不执行该操作 |
2.0MiB |
int |
kv.closed_timestamp.close_fraction |
封闭时间戳目标持续时间比例,系统将根据设定比例更新封闭时间戳。 |
0.2 |
float |
kv.closed_timestamp.follower_reads_enabled |
所有副本基于封闭时间戳的信息提供一致的历史读取。 |
TRUE |
bool |
kv.closed_timestamp.target_duration |
设置为非零后,系统会在当前时间戳之后,大约经过指定的持续时间后,尝试为仍然活动的事务提供封闭时间戳通知 |
3s |
duration |
kv.dist_sender.concurrency_limit |
异步发送请求的最大数量 |
2560 |
int |
kv.gc.intent_age_threshold |
事务意图的时间超过设置的阈值时,将在垃圾回收(GC)队列遇到时进行解析 |
2h0m0s |
duration |
kv.gc_ttl.strict_enforcement.enabled |
如果设置为true,即使数据仍然存在,在TTL下的时间戳无法提供请求服务 |
TRUE |
bool |
kv.lock_table.coordinator_liveness_push_delay |
在推送之前的延迟时间,用于检测具有冲突事务的协调器故障 |
10ms |
duration |
kv.lock_table.deadlock_detection_push_delay |
在推送之前的延迟时间,用于检测事务之间的依赖循环 |
100ms |
duration |
kv.protectedts.max_bytes |
如果非零,表示可保护的跨度和元数据的字节数限制 |
1048576 |
int |
kv.protectedts.max_spans |
如果非零,表示可保护的跨度数量的限制 |
4096 |
int |
kv.protectedts.poll_interval |
受保护的时间戳子系统状态轮询的间隔 |
2m0s |
duration |
kv.protectedts.reconciliation.interval |
通过受保护的时间戳记录协调作业的频率 |
5m0s |
duration |
kv.queue.process.guaranteed_time_budget |
队列处理可能超时之前的保证持续时间 |
1m0s |
duration |
kv.raft.command.max_size |
raft命令的最大大小 |
64MiB |
int |
kv.raft_log.disable_synchronization_unsafe |
当设置为 true 时,系统将禁用 Raft 日志同步写入持久存储。禁用同步写入意味着数据可能在系统崩溃或发生故障时丢失或损坏,这一设置仅用于内部测试,不得用于生产环境。 |
FALSE |
bool |
kv.range.backpressure_range_size_multiplier |
不拆分range的情况下,允许数据大小增长的最大倍数,当range的数据大小超过了range_max_bytes 设定值的最大倍数,系统将不再允许对该range进行写入操作,设置为0时表示禁用该机制。 |
2 |
float |
kv.range_descriptor_cache.size |
range描述符和租约持有者缓存中允许存储的条目最大数量。 |
1000000 |
int |
kv.range_merge.queue_enabled |
是否启用自动合并队列。 |
TRUE |
bool |
kv.range_merge.queue_interval |
合并队列在处理副本时,等待的时间间隔。 |
1s |
duration |
kv.range_split.by_load_enabled |
允许系统根据负载集中的位置自动拆分range。 |
TRUE |
bool |
kv.range_split.load_qps_threshold |
当 QPS 超过指定阈值时,系统将根据负载情况自动进行range拆分。 |
2500 |
int |
kv.rangefeed.concurrent_catchup_iterators |
存储在处理rangefeeds catchup迭代器时,允许同时并发处理的数量。 |
64 |
int |
kv.rangefeed.enabled |
启用 rangefeed 注册。 |
TRUE |
bool |
kv.replication_reports.interval |
生成复制约束统计、复制统计报告以及复制关键位置信息报告的频率。 |
1m0s |
duration |
kv.snapshot_rebalance.max_rate |
重新平衡和上复制快照的速率限制(字节/秒)。 |
8.0MiB |
int |
kv.snapshot_recovery.max_rate |
恢复快照的速率限制(字节/秒)。 |
8.0MiB |
int |
kv.snapshot_sst.sync_size |
写入快照(snapshot SST)后必须执行文件同步(fsync)的阈值 |
2.0MiB |
int |
kv.transaction.max_intents_bytes |
事务中用于跟踪锁的最大字节数。 |
262144 |
int |
kv.transaction.max_refresh_spans_bytes |
序列化事务中用于跟踪刷新跨度的最大字节数。 |
256000 |
int |
kv.transaction.parallel_commits_enabled |
启用后,事务提交将与事务写并行。 |
TRUE |
bool |
kv.transaction.write_pipelining_enabled |
启用后,系统将采用 Raft一致性算法来处理事务写入,并使用流水线传输 |
TRUE |
bool |
kv.transaction.write_pipelining_max_batch_size |
设置值为非零时,规定通过Raft进行流水线传输的批处理的最大大小。 |
128 |
int |
kv.transaction.write_pipelining_max_outstanding_size |
在禁用流水线传输之前跟踪正在进行的流水线写入的最大字节数。 |
256KiB |
int |
metrics.reporting.group_list |
收集的子开关 |
- |
string |
rocksdb.ingest_backpressure.l0_file_count_threshold |
进行背压SST ingestions之前 L0的文件数量。 |
20 |
int |
rocksdb.ingest_backpressure.max_delay |
单个 SST ingestions最大背压时间 |
5s |
duration |
rocksdb.ingest_backpressure.pending_compaction_threshold |
待处理合并的估算数量超过指定阈值时,系统将对SST ingestions 施加背压 |
2.0GiB |
int |
rocksdb.min_wal_sync_interval |
RocksDB WAL 同步的最小持续时间。 |
0s |
duration |
schemachanger.backfiller.buffer_increment |
BulkAdder在刷新数据之前缓冲区可尝试扩大的尺寸 |
32MiB |
int |
schemachanger.backfiller.buffer_size |
处理索引回填的BulkAdder缓冲区的初始大小 |
32MiB |
int |
schemachanger.backfiller.max_buffer_size |
处理索引回填的BulkAdder缓冲区的最大大小 |
512MiB |
int |
schemachanger.backfiller.max_sst_size |
回填期间摄取文件的目标大小。 |
16MiB |
int |
schemachanger.bulk_index_backfill.batch_size |
批量索引回填期间一次处理的行数 |
50000 |
int |
server.advanced_distributed_operations.enabled |
分布式功能操作开关,默认关闭,设置为 true后允许执行加入新节点、节点退役、节点故障以及手动平衡等操作。 |
FALSE |
bool |
server.auth_log.sql_connections.enabled |
设置为true时,系统将记录 SQL客户端连接和断开事件,可能会影响负载较重节点的性能。 |
FALSE |
bool |
server.auth_log.sql_sessions.enabled |
设置为true时,系统将记录 SQL会话登录和断开事件,可能会影响负载较重节点的性能。 |
FALSE |
bool |
server.clock.forward_jump_check_enabled |
设置为true时,时钟跳变 > max_offset/2 时将导致紧急情况。 |
FALSE |
bool |
server.clock.persist_upper_bound_interval |
持久化时钟墙上限的时间间隔。时钟在此期间不会生成大于已持久化时间戳的墙上时间,系统如果看到大于此值的墙上时间,将引发紧急情况。KWDB启动时会等待墙上时间追赶至已持久化时间戳。这确保了在服务器重启时墙上时间的单调递增。不设置此值或将其设置为 0 将禁用此功能。 |
0s |
duration |
server.consistency_check.interval |
range一致性检查的时间间隔;设置为0时将禁用一致性检查,如果间隔设置过小可能会影响性能。 |
24h0m0s |
duration |
server.consistency_check.max_rate |
一致性检查的速率限制(字节/秒),与 server.consistency_check.interval 一起使用,以控制一致性检查的频率,可能会影响性能。 |
8.0MiB |
int |
server.cpu_profile.total_dump_size_limit |
保存在磁盘上的 CPU 配置文件的最大组合大小。 |
128MiB |
int |
server.declined_reservation_timeout |
预约被拒绝后,系统考虑存储的上复制状态持续被限制的最大时间。 |
1s |
duration |
server.distribute.ha_check_interval |
节点状态监测间隔 |
4s |
duration |
server.eventlog.ttl |
如果非零,系统每10分钟删除一次事件日志条目。设置值不应低于 24 小时。 |
2160h0m0s |
duration |
server.failed_reservation_timeout |
预约调用失败后,系统考虑存储的上复制状态持续被限制的最大时间。 |
5s |
duration |
server.goroutine_dump.num_goroutines_threshold |
goroutine 数量增加并达到预设的阈值时,系统可能会触发 goroutine 转储。 |
1000 |
int |
server.goroutine_dump.total_dump_size_limit |
要保留的 goroutine 转储的总大小。系统按创建时间顺序对goroutine 转储进行回收,以保留最新的转储,即使其大小超过限制。 |
500MiB |
int |
server.host_based_authentication.configuration |
连接验证期间使用基于主机的验证配置。 |
- |
string |
server.mem_profile.max_profiles |
内存使用逐渐增加的过程中,保存的配置文件的最大数量。 |
5 |
int |
server.mem_profile.total_dump_size_limit |
保存的内存配置文件的最大组合大小。 |
128MiB |
int |
server.pseudo_cache_size |
伪目录缓存的最大大小 |
128 |
int |
server.rangelog.ttl |
如果非零,系统每10分钟删除一次range日志条目。设置值不应低于 24 小时。 |
720h0m0s |
duration |
server.remote_debugging.mode |
用于启用或禁用远程调试。设置为 "local" 表示仅在本地启用远程调试,设置为 "any" 表示允许从任何地方启用远程调试,设置为 "off" 表示禁用远程调试。 |
local |
string |
server.rest.timeout |
Restful API连接超时阈值,超过该阈值后,系统将断开该会话连接,默认值为60分钟,可设置范围为[1, 2^63-1]分钟。 |
60 |
int |
server.shutdown.drain_wait |
关闭服务器时,服务器在未准备好状态下等待的时间。 |
0s |
duration |
server.shutdown.lease_transfer_wait |
关闭服务器时,服务器等待range租约传输完成的时间。 |
5s |
duration |
server.shutdown.query_wait |
服务器等待活动查询完成的时间。 |
10s |
duration |
server.sql_connections.max_limit |
各节点最大连接数,设置值应大于4。 |
200 |
int |
server.time_until_store_dead |
如果节点在指定时间内没有通过 gossip 协议发送更新,系统将其标记为死亡节点。 |
5m0s |
duration |
server.tsinsert_direct.enabled |
启动集群级别的时序insert短接,以提升写入性能 |
false |
bool |
server.user_login.timeout |
当某个系统range不可用时,超过设置时间,客户端身份验证将超时。 |
10s |
duration |
server.web_session_timeout |
新创建Web会话在系统中保持有效的时间。 |
168h0m0s |
duration |
sql.add_bo_black_list |
将SQL操作添加到下推黑名单 |
- |
string |
sql.all_push_down.enabled |
将所有SQL操作进行下推 |
TRUE |
bool |
sql.autonomic_optimization.enabled |
启用自主优化 |
TRUE |
bool |
sql.complex_query.enabled |
启用复杂查询 |
TRUE |
bool |
sql.content_collect.enabled |
启用收集物理计划和逻辑计划描述 |
FALSE |
bool |
sql.defaults.default_int_size |
INT数据类型的大小,单位为字节。 |
8 |
bool |
sql.defaults.distsql |
分布式 SQL 执行模式[off = 0,auto = 1,on = 2]。 |
auto |
int |
sql.defaults.experimental_hash_sharded_indexes.enabled |
实验性启用哈希分片索引的默认值,用于允许创建哈希分片索引 |
FALSE |
enum |
sql.defaults.experimental_temporary_tables.enabled |
experimental_enable_temp_tables(实验性启用临时表)的默认值,用于允许创建临时表 |
FALSE |
bool |
sql.defaults.idle_in_session.timeout |
设定空闲会话超时时间,系统会自动终止超过指定时间的空闲会话,默认值为0表示不限制。 |
0s |
duration |
sql.defaults.implicit_select_for_update.enabled |
enable_implicit_select_for_update会话设置的默认值;在变更语句的行提取阶段启用 FOR UPDATE 锁定。 |
TRUE |
bool |
sql.defaults.insert_fast_path.enabled |
enable_insert_fast_path 会话设置的默认值,用于启用专用写入路径。 |
TRUE |
bool |
sql.defaults.optimizer_foreign_keys.enabled |
optimizer_foreign_keys 会话设置的默认值,用于启用优化器驱动的外键检查 |
TRUE |
bool |
sql.defaults.reorder_joins_limit |
重新排序的默认连接数量。 |
4 |
bool |
sql.defaults.require_explicit_primary_keys.enabled |
用于设置建表语句是否需要显式指定主键。 |
FALSE |
int |
sql.defaults.results_buffer.size |
将查询结果发送到客户端之前,服务器端累积语句结果或语句批处理结果的缓冲区大小。可以通过指定连接的results_buffer_size参数进行覆盖本设置值。自动重试只有在结果尚未传递到客户端时才会发生。因此,如果减小缓冲区大小,客户端可能会接收更多可重试错误。增加缓冲区大小则可能会增加客户端在收到第一个结果行之前的等待时间。 更新设置仅影响新连接。 设置为0时禁用任何缓冲。 |
16KiB |
bool |
sql.defaults.serial_normalization |
表定义中 SERIAL 的默认处理方式 [rowid = 0,virtual_sequence = 1,sql_sequence = 2]。 |
rowid |
int |
sql.defaults.vectorize |
矢量化模式的默认值,off=0、auto=1 、on=2。 |
off |
enum |
sql.defaults.vectorize_row_count_threshold |
默认的矢量化行数阈值。 |
1000 |
enum |
sql.defaults.zigzag_join.enabled |
enable_zigzag_join 会话设置的默认值;默认允许使用 ZIGZAG JOIN。 |
TRUE |
int |
sql.delete_bo_black_list |
将SQL操作移出下推黑名单。 |
- |
string |
sql.distsql.distribute_index_joins |
设置为启用时,对于索引连接,系统会在每个包含数据流的节点上创建一个连接读取器实例,设置为未启用时,系统将使用单个连接读取器。 |
TRUE |
string |
sql.distsql.flow_stream_timeout |
传入流在建立流程之前等待的最长时间,如果在此时间内无法成功建立流程,就会抛出错误。 |
10s |
bool |
sql.distsql.interleaved_joins.enabled |
设置为启用时,系统将尽可能选择交错表连接,而不是合并连接。 |
TRUE |
duration |
sql.distsql.max_running_flows |
在节点上可以运行的最大并发流数量。 |
500 |
bool |
sql.distsql.merge_joins.enabled |
设置为启用时,系统将尽可能使用合并连接。 |
TRUE |
int |
sql.distsql.temp_storage.joins |
设置为true时将在分布式 SQL连接中使用磁盘。注:禁用该设置可能会影响内存使用和性能。 |
TRUE |
bool |
sql.distsql.temp_storage.sorts |
设置为true时将在分布式 SQL排序中使用磁盘。注:禁用该设置可能会影响内存使用和性能。 |
TRUE |
bool |
sql.distsql.temp_storage.workmem |
处理器在回退到临时存储之前可用的内存上限。 |
64MiB |
bool |
sql.hashrouter.partition_coefficient_num |
集群中时序数据的range数目 |
1 |
int |
sql.hashrouter.tsrangereplicanum |
集群中时序数据的range副本数 |
3 |
int |
sql.hashrouter.use_gossip_lock.enabled |
是否使用 gossip 锁 |
FALSE |
bool |
sql.iscollection.appdatacollectionswitch |
用于启用或禁用应用数据的收集 |
string |
|
sql.iscollection.userdatacollectionswitch |
用于启用或禁用用户数据的收集 |
duration |
|
sql.log.slow_query.latency_threshold |
设置为非零时,当SQL语句服务延迟超过指定阈值时,系统将在每个节点的辅助日志记录器记录该语句。 |
0s |
int |
sql.max_device_count |
复杂查询最大设备数 |
2000 |
int |
sql.metrics.statement_details.dump_to_logs |
定期清除时将收集的语句统计信息写入到节点日志中。 |
FALSE |
bool |
sql.metrics.statement_details.enabled |
收集每个语句的查询统计信息。 |
TRUE |
bool |
sql.metrics.statement_details.plan_collection.enabled |
定期保存每个指纹的逻辑计划。 |
TRUE |
duration |
sql.metrics.statement_details.plan_collection.period |
收集新的逻辑执行计划之间的时间间隔。 |
5m0s |
duration |
sql.metrics.statement_details.threshold |
触发统计信息收集所需的最小执行时间 |
0s |
bool |
sql.metrics.transaction_details.enabled |
收集每个应用的事务统计信息 |
TRUE |
bool |
sql.notices.enabled |
在服务器/客户端协议中发送通知 |
TRUE |
bool |
sql.parallel_scans.enabled |
在可以推导出最大结果大小的情况下,并行扫描不同range。 |
TRUE |
bool |
sql.pg_encode_short_circuit.enabled |
启用短路优化 |
FALSE |
bool |
sql.plan_cache.tmpl.enabled |
启用计划缓存的模板 |
FALSE |
bool |
sql.pre_match_all.enabled |
匹配所有时间间隔 |
FALSE |
bool |
sql.pseudocatalog.cache_refresh.enabled |
自动伪目录收集模式 |
TRUE |
bool |
sql.pseudocatalog.cache_refresh.fraction_stale_rows |
每张表触发伪目录刷新的目标过时行比例 |
0.2 |
float |
sql.pseudocatalog.cache_refresh.min_stale_rows |
每张表触发伪目录刷新的最小过时行行数 |
20 |
int |
sql.pseudocatalog.check_last_refresh_time.enabled |
检查伪目录过期时间。 |
TRUE |
bool |
sql.query_cache.enabled |
启用查询缓存。 |
TRUE |
bool |
sql.split.filter.enabled |
启用分割过滤器,设置为启用时,系统将在KWDB强制执行过滤器流程,设置为禁用时将尝试推送到AE进行处理。 |
FALSE |
bool |
sql.stats.automatic_collection.enabled |
自动统计关系信息收集模式。 |
FALSE |
bool |
sql.stats.automatic_collection.fraction_stale_rows |
每张关系表触发统计信息刷新的过期行百分比。 |
0.2 |
float |
sql.stats.automatic_collection.max_fraction_idle |
自动统计关系信息采样处理器处于空闲状态的最大时间比例。 |
0.9 |
float |
sql.stats.automatic_collection.min_stale_rows |
每张关系表触发统计信息刷新的最小过期行行数。 |
500 |
int |
sql.stats.automatic_ts_collection.fraction_stale_rows |
每张时序表触发统计信息刷新的过期行百分比。 |
0.1 |
float |
sql.stats.automatic_ts_collection.min_stale_rows |
每张时序表触发统计信息刷新的最小过期行行数。 |
100 |
int |
sql.stats.histogram_collection.enabled |
直方图收集模式。 |
TRUE |
bool |
sql.stats.max_timestamp_age |
表统计信息收集时,时间戳的最大允许时间范围 |
5m0s |
duration |
sql.stats.post_events.enabled |
启用设置后,每次创建统计信息作业时都会生成一个事件记录。 |
FALSE |
bool |
sql.stats.ts_automatic_collection.enabled |
自动统计时序数据信息收集模式。 |
TRUE |
bool |
sql.stmt_diagnostics.bundle_chunk_size |
语句诊断包的块大小 |
1.0MiB |
int |
sql.stmt_diagnostics.poll_interval |
stmtdiagnostics.Registry 轮询请求的速率 |
10s |
duration |
sql.tablecache.lease.refresh_limit |
定期刷新租约的最大表数。 |
50 |
int |
sql.tag_filter_parallel.enabled |
处理查询时,系统是否并行化处理标签过滤条件 |
FALSE |
bool |
sql.temp_object_cleaner.cleanup_interval |
清理孤立临时对象的频率。 |
30m0s |
bool |
sql.template_table_limit.enabled |
模板表限制 |
TRUE |
duration |
sql.trace.log_statement_execute |
设置为true时启用执行语句的日志记录。 |
FALSE |
int |
sql.trace.session_eventlog.enabled |
设置为 true时启用会话跟踪,可能会明显影响性能。 |
FALSE |
bool |
sql.trace.txn.enable_threshold |
事务的执行时间超过指定的持续时间时,系统将对该事务进行追踪,设置为0时禁用该功能。 |
0s |
bool |
sql.ts_insert_select.row_memory |
时序数据插入选择操作一次性写入的行内存 |
||
sql.ts_insert_select.row_number |
时序数据插入选择操作一次性写入的行数 |
||
sql.ts_insert_select_limit.enabled |
允许时序数据写入关系表 |
||
sql.ts_stats.enabled |
启动时序数据统计信息收集 |
||
template_table.precomputing.match.concurrent.enabled |
并发匹配模板表的预计算 |
FALSE |
bool |
timeseries.storage.enabled |
是否在集群内存储周期性的时序数据。除非数据已经在其他地方存储否则不建议禁用。 |
TRUE |
bool |
timeseries.storage.resolution_10s.ttl |
以10秒分辨率存储的时序数据的最大保存时长,超过这个时长的数据将被汇总和删除。 |
240h0m0s |
duration |
timeseries.storage.resolution_30m.ttl |
以30分钟分辨率存储的时序数据的最大保存时长,超过这个时长的数据将被汇总和删除。 |
2160h0m0s |
duration |
trace.debug.enable |
设置为启用后,可以在 /debug 页面中查看对最近请求的跟踪信息。 |
FALSE |
bool |
trace.lightstep.token |
设置为启用后,跟踪数据将使用指定的令牌发送到 Lightstep。 |
- |
string |
trace.zipkin.collector |
设置为启用后,跟踪数据将发送到指定的 Zipkin实例,例如:'127.0.0.1:9411';如果设置了 trace.lightstep.token,该设置将被忽略。 |
- |
string |
ts.blocks_per_shard.max_limit |
用于控制时序表的时间分区下每个定长子目录(shard)中可以存储的数据块的数量,通过控制块项的数量,可以优化数据的存储和查询效率,以满足系统的要求和性能需求。 默认值为500,支持配置范围为[1, 1000000]。 |
1000 |
int |
ts.cached_partitions_per_subgroup.max_limit |
用于限制控制子组中分区表LRU(Least Recently Used,最近最少使用)缓存的大小,当缓存中的数据量达到阈值时,LRU缓存将按照最近访问时间进行淘汰,以保持缓存的有效性和性能。 默认值为10,支持配置范围为[0, 2147483647],设值为0时表示无缓存大小限制。 |
10 |
int |
ts.dedup.rule |
数据去重策略。支持设置为以下参数:
注意:keep和reject目前只适用于单节点部署。 |
override |
string |
ts.entities_per_subgroup.max_limit |
用于限制时序表子分组中实体设备的数量,当子分组中的设备数量达到设置值时,将切换到新的子分组中。 设置值为500,支持设置范围为[1, 2147483647]。 |
500 |
int |
ts.mount.max_limit |
系统可挂载的压缩文件数量,有效范围为[0, 2147483647], 设置为0时表示不限制挂载文件数量,在全表查询等场景下,实际挂载的压缩文件数量可能会超过设定值,但系统会在查询结束后将挂载文件数量限制到非零设定值。 |
1000 |
int |
ts.parallel_degree |
单节点可并行的时序数据查询任务数量,有效范围为[0, cpu_core*2+2],其中cpu_core数量为实际使用的逻辑处理器数量,设置为0和1时系统将串行执行数据查询,设置值大于1时表示可并行的任务数量。 |
0 |
int |
ts.partition.interval |
数据分区间隔,设置值必须大于0。 |
864000 |
int |
ts.rows_per_block.max_limit |
用于控制时序表每个时间分区下单个列文件中每个块项中可存储的数据行数,来调节数据库存储数据时的存储密度和性能,平衡存储空间利用率和查询性能。 默认值为1000,支持配置范围为[10,1000]。 |
1000 |
int |
ts.trace.on_off_list |
时序trace日志收集和推送开关 |
- |
string |
ts.wal.buffer_size |
时序表WAL日志缓存大小,默认值为4MiB。建议设置值不小于4MiB。 |
4MiB |
int |
ts.wal.checkpoint_interval |
WAL日志检查点周期,KWDB时序引擎会通过后台线程,按照指定的时间间隔,执行CHECKPOINT操作,更新WAL文件和数据文件的CHECKPOINT_LSN(检查点日志序列号),写入WAL日志,然后同步数据文件到磁盘。 默认值为1分钟。建议在日常运行中设置大于1分钟的时间间隔。如果宕机恢复速度较慢,可以缩短此间隔,建议最小为1秒。 |
1min |
int |
ts.wal.file_size |
单个WAL日志文件的大小。默认值为64MiB,建议设置值大于1MiB。建议根据数据库日增大小设置每个日志文件大小。 |
64MiB |
int |
ts.wal.files_in_group |
时序表WAL日志文件组的文件数量。建议根据数据库日增大小设置文件数量。 |
3 |
int |
ts.wal.flush_interval |
WAL日志同步周期,默认值为0,表示系统将实时写入WAL日志; 设置值小于0时表示关闭WAL日志; 设置值在0-200ms区间时,系统将实时写入WAL日志; 设置值大于200ms时系统将根据实际设置值进行日志同步。 |
0s |
int |
version |
选择格式为 '<主版本号>.<次版本号>' 的活跃集群版本。 |
20.1 |
m |