KaiwuDBKaiwuDB

搜索
免费试用
加载中~
收藏

《一文讲透》第4期:KWDB 数据库运维(2) —— 集群参数

KaiwuDB 社区官方号 time2024-11-13

作为一款“多模融合”的开源数据库,KWDB 旨在为用户提供“灵活快速、可靠易用“的操作体验。因此,KWDB的一大任务就是:简化数据库集群配置。

为避免每个节点单独编写配置文件或者重启中断服务,KWDB 跳出传统的配置文件方式,采用了启动参数和集群参数组合的方式来控制数据库集群。本文就带领大家一起快速了解 KWDB 的集群参数。


01
概述


根据参数使用场景和生效范围,KWDB的参数分为三类:启动参数、环境变量和实时集群参数。

 启动参数

  • 启动参数是数据库实例级别的参数,控制数据库单个服务的行为。

  • 此类参数只在数据库实例启动时一次性读取,一旦发生修改,需要重启数据库服务才能生效。

  • 参数可以在启动命令中一次性传递,也可以通过维护系统服务如systemd 来持久化。

 环境变量

  • 环境变量是操作系统级别的参数,控制用户或者系统级别下所有数据库实例的行为。

  • 此类参数只在数据库进程启动时一次性读取,一旦发生修改,需要重启数据库服务才能生效。

  • 参数可以在系统或用户级 shell 配置文件中配置,如 .bashrc 或者 .bash_profile,也可以在系统服务如 systemd 中进行配置。

实时集群参数

  • 实时集群参数是数据库集群级别的参数,控制同一集群下所有数据库实例的行为。

  • 此类参数实时生效并自动广播至集群每个节点,不需要重启任何数据库服务。

  • 参数通过 SQL 语句进行修改,会写入系统表进行持久化。

以下为三类参数的详细说明。


02
启动参数


启动参数包括通用、网络、安全、日志等类型参数,下面将按照类型划分,对参数进行解释。开始前须知:

  • 很多参数都有默认值,可以通过显式指定的方式来覆盖默认值。因为指定值不是持久化的操作,每次重新启动节点时都需要重新配置指定值。唯一的例外是 --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 ,例如:

--locality-advertise-addr=region=cn-north@10.0.0.0: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列表指定,可能会严重影响性能。


03
环境变量


对于 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:ignored@errors.kwbasedb.com/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


04
实时集群参数



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:允许重复数据写入且不去重

  • merge:相同时间戳的列数据去重并整合列数据为一条,后写入的列数据会覆盖已写入的相同时间戳的列数据,并整合为一行,适用于相同时间戳不同字段数据分批写入的场景。

  • override:整行去重,后写入的数据会覆盖已存在的具有相同时间戳的数据。

  • reject:禁止重复数据写入。当重复数据写入失败后,客户端会收到成功插入数据的条数,并以 Notice 的形式展示未成功插入数据的条数。

  • discard:忽略新写入的重复数据,保留已存在的数据。当重复数据写入失败后,客户端会收到成功插入数据的条数,并以 Notice 的形式展示未成功插入数据的条数。

注意: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




以上就是数据库运维系列的第2篇,更多精彩后续欢迎关注我们!




Hi,访客请登录!欢迎分享,一起交流~

发表
暂时还没评论,等你发挥!

体验全新的分布式多模数据库解决方案

企业版 社区版

KaiwuDB 是浪潮控股的数据库企业,面向工业物联网、数字能源、车联网、智慧产业等行业领域,提供稳定安全、高性能、易运维的创新数据软件与服务。

关注官方微信

友情链接:浪潮  

© 上海沄熹科技有限公司 Shanghai Yunxi Technology Co., Ltd.    沪ICP备2023002175号-1    网站服务协议   |   隐私政策