TDengine 技术参数配置大全

发布于:2025-06-25 ⋅ 阅读:(22) ⋅ 点赞:(0)

1. 背景

TDengine 的 taos.cfg 中配置项及使用 SQL 命令 alter 修改的系统变量之间的关系如何,哪些是持久存储项,哪些设置是临时项,这章将详细说明。

本文是技术参考资料,请收藏。

2.定义

1. 全局配置参数

  • 配置参数:作用于集群内所有 dnode 且在集群内必须保持一致的变量,也称为全局变量系统变量全局参数。例如:

timezone/charset/countAlwaysReturnValue

  以上配置必须保持一致,不一致则程序返回结果可能会有问题。

2.局部配置参数

  • 局部配置参数:作用于集群内某个 dnode 或客户端(taosc,视为集群的一个节点) 但不要求集群内必须保持一致的变量,也称为局部参数局部变量;根据作用范围,可分为服务端(dnode)局部变量、客户端(taosc)局部变量,示例如下:

1) 只适用于 dnode 的局部配置参数:

例如:dDebugFlag/vDebugFlag/numOfMnodeReadThreads/numOfVnodeReadThreads 2) 只适用于客户端 taosc 的局部配置参数:

例如,cDebugFlag/minSlidingTime 3) 既适用于 dnode 也适用于 taosc 的局部配置参数: 例如,debugFlag/firstEp/numOfLogLines/logDir/tempDir

  • 客户端局部配置参数通过 clientHb 进行同步,默认与服务端保持一致;需要与服务端不一致的配置参数,可手动在客户端所使用的配置文件中配置。

    注:在本文中,”变量“ 和 ”配置参数“ 具有相同含义,视为等价。

3.行为说明

  • 系统变量

  • 查看系统变量

show variables/show cluster variables; 
// 查看系统变量, 二者等价 
select * from information_schema.ins_configs; 
// 查看系统变量,相比较 show variables 缺少 scope 列

目前,show variables 与 select * from ins_configs 输出内容基本一致,但是用了两种完全不同的实现方式。实际上,二者统一使用 ins_configs 的机制即可。

  • 增加 category 以区分变量类别,global 表示系统变量,local 表示局部变量。示例如下,因为 show variables 的作用就是展示系统变量,所以以下输出中的 category 字段的值均为 global

taos> show variables; name | value | scope| category| ============================================================================================= statusInterval | 1 | statics | global| timezone | Asia/Shanghai (CST, +0800) | sysconf | global| locale | en_US.UTF-8 | sysconf | global| charset | UTF-8 | sysconf | global| monitor | 1 | monitor | global| monitorInterval | 30 | monitor | global| slowLogThreshold | 10 | slowlog | global| slowLogMaxLen | 4096 | slowlog | global| slowLogScope | QUERY | slowlog | global| ...

Query OK, 9 row(s) in set (0.002328s)

  1. 系统变量列表

  • 以下变量在 3.3.4.0 版本开始被归类为系统变量:

变量名称 说明 取值范围 默认值 动态修改 类别 适用范围 备注
timezone 时区 系统时区 sysconf server 不建议下发至客户端,
locale 系统区位信息及编码格式 系统 local sysconf server 不建议下发至客户端,

字符集编码
系统 charset sysconf server
enableWhiteList 是否打开白名单功能 [0,1] 0 permission server
statusInterval dnode 向 mnode 报告状态间隔 [1,30] 1 秒 statis server
monitor 是否开启监控 0,1 1 开启 monitor server
monitorInterval 监控上报间隔 [1,86400] 30 秒 monitor server
monitorComp 在上报 monitor 消息时,是否采用压缩方式 0: 不压缩, 1:压缩 0 是/重启生效 monitor server
monitorForceV2 是否使用V2版本监控 0/1 1 monitor server
monitorLogProtocol 是否打印监控日志 0/1 0 monitor server
monitorMaxLogs 在每个 montior 上报时间间隔,可以缓存的待上报日志条数 [1,1000000] 100 monitor server
audit 是否开启申计功能 0:不开启,1:开启 1 audit server
auditCreateTable 是否针对建表开启申计功能 0:不开启,1:开启 1 audit server
auditInterval 申计上报周期 [500,200000] 毫秒 5000 audit server
compressMsgSize 表示是否对RPC消息进行压缩 -1: 所有消息都不压缩
0: 所有消息都压缩
N: N>0,表示大于N字节的消息进行压缩
-1 是/重启生效 compress both
compressor 默认压缩算法 ZSTD_COMPRESSOR compress server
curRange current quantization intervals [0,65536] 100 compress server
dPrecision double column precision [0.0,1000000.0] 1E-16 compress server
fPrecision float column precision [0.0, 100000.0] 0.00000001 compress server
ifAdtFse ADT-FSE algorithom or original huffman algorithom 0,1 0 compress server
maxRange max quantization intervals [0,65536] 500 是/重启生效/暂不支持 compress server
arbCheckSyncIntervalSec 双活模块同步间隔时间 [1,60*24*2] 10 否/暂不支持 dual replica server
arbHeartBeatIntervalSec 双活模块心跳间隔时间 [1,60*24*2] 5 否/暂不支持 dual replica server
arbSetAssignedTimeoutSec 双活模块超时时间 [1,60*24*2] 30 否/暂不支持 dual replica server
encryptAlgorithm 加密算法 否/暂不支持 encrypt server
encryptScope 加密范围 否/暂不支持 encrypt server
experimental 实验开关 0/1 1 是/重启生效 query both
maxTsmaNum 集群内一共可创建TSMA个数受参数`maxTsmaNum`限制.注意, 由于TSMA后台计算使用流计算, 因此每创建一条TSMA, 将会创建一条流, 因此能够创建的TSMA条数也受当前已经存在的流条数和最大可创建流条数限制. [0,3] 3 query server
queryRsmaTolerance 表示用于判定查询哪一级 rsma 数据时的容忍时间,单位为毫秒 [0, 900000] 1000 query server
queryRspPolicy 查询响应策略 0: delay
1: quick
0 query server
countAlwaysReturnValue count/hyperloglog函数在输入数据为空或者NULL的情况下是否返回值 0:返回空行1:返回 0 1 query both
uptimeInterval dnode 向 mnode 报告启动状态的时间间隔,单位为秒 [1,100000] 300 statis server
timeseriesThreshold vnode 测点数变化上报门限值 [0,2000] 50 statis server
s3Accesskey s3 密钥 是/重启生效 s3 server
s3BucketName s3 桶名 是/重启生效 s3 server
s3Endpoint s3 使用的 endpoint 是/重启生效 s3 server
s3PageCacheSize s3 page cache 缓存页数目,单位:页。最小值:4;最大值:1024*1024*1024。 [4,1024*1024*1024] 4096 是/重启生效 s3 server
s3UploadDelaySec data 文件不再变动后延迟多久上传至 s3,单位:秒 [1,60 * 60 * 24 * 30] 60 s3 server
mndSdbWriteDelta 单个文件的日志数目阈值,到达此阈值,mnode元数据会落盘,此时将产生新的wal文件。 200 sdb server
checkpointInterval checkponit 同步间隔 [60,1800] 60 stream server
concurrentCheckpoint 当前 checkpoint [1,10] 1 stream server
disableStream 是否启用流计算功能 0/1 0 是/重启生效 stream server
resolveFQDNRetryTime 启动时,解析FQDN失败会重试,一秒一次,该参数指定重试的次数 单位秒 100 sync server
syncElectInterval raft定时器在 syncElectInterval 与 2 * syncElectInterval (2.5秒-5秒)之间选择一个随机值,作为下次发起选举的时间。 单位:毫秒 2500 sync server
syncHeartbeatInterval raft leader 向follwer发送心跳消息的时间间隔,以维持自己的leader状态。 单位:毫秒 1000 sync server
syncHeartbeatTimeout raft leader 在 指定时间内如果收不到quorum-1个follower 心跳消息的回应,则认为当前集群内没有quorum个节点互通,无法正常工作。对于新来的请求,直接拒绝服务。 单位:毫秒 20000 sync server
syncSnapReplMaxWaitN [16,4096] 128 sync server
syncLogBufferMemoryAllowed [104857600,INT64_MAX] 0 sync server
telemetryInterval 用来上传 telemetry 的时间间隔,单位为秒,仅用于内部测试 [0,200000] 43200 telemetry both
telemetryPort 上传 telemtry 信息的服务所监听的端口,仅用于内部测试 [1, 65056] 80 telemetry both
telemetryReporting 是否允许 TDengine 采集和上报
基本使用信息
0: 不允许
1:允许
1 telemetry both
telemetryServer 上传 telemetry 信息的域名,
仅用于内部测试
telemetry.taosdata.com telemetry both
mqRebalanceInterval 检测rebalance的间隔时间 2 秒 tmq server
tmqMaxTopicNum 支持最大的 topic 数量 tmq server
tmqRowSize tmq server
transPullupInterval 当有对 mnode 操作因为错误而未执行结束时,mnode 下次发起重试的时间间隔 [1,10000] 2 transaction server
keepAliveIdle 空闲连接保持时间 [1,7200000] 60 transport both
maxRetryWaitTime 重连最大超时时间 [0,86400000] 10000 是/重启生效 transport both
maxShellConns 一个 dnode 容许的连接数 [10,50000000] 5000 是/重启生效 transport server
numOfRpcSessions 创建的最大连接数 [1,100000] 30000 是/重启生效 transport both
numOfRpcThreads RPC的收发线程数目 最大值为 20 CPU核数的1/2 是/重启生效 transport both
rpcQueueMemoryAllowed 接收到的 RPC 消息,如果没有被处理,会暂存在 dnode 的待处理队列中;通过这个值控制该队列的大小,避免累积消息过多,导致内存无限上涨直到 OOM 100M ~ 10G 系统总内存的 1/10 transport both
shellActivityTimer [1,120] 3 是/重启生效 transport both
timeToGetAvailableConn 获得可用连接的最长等待时间,单位为毫秒 [10,50000000] 500000 是/重启生效 transport both
tsReadTimeout 单个请求最小超时时间,取值范围 64-604800,单位为秒,默认值 900
compactPullupInterval tsdb server
cacheLazyLoadThreshold tsdb server
maxCompactConcurrency 控制 1 个 dnode 上 compact 任务的并发度 [0, 16],0 表示不限制 2 tsdb server
retentionSpeedLimitMB 数据文件多级存储间迁移限速 [0,1024] 0 不限速 tsdb server
trimVDbIntervalSec 数据文件迁移触发周期 [1,100000] 3600 tsdb server
ttlChangeOnWrite 表的修改操作是否改变表的TTL 0,1 0 不改变 ttl 服务端
ttlBatchDropNum ttl server
ttlFlushThreshold ttl server
ttlPushInterval ttl 检测超时频率 ttl server
ttlUnit ttl 参数的单位 ttl server
udf 是否启动 udf 功能 是/重启生效 udf server
udfdLdLibPath 是/重启生效 udf server
udfdResFuncs 是/重启生效 udf server
mndLogRetention 累积文件的日志数目阈值,到达此阈值会进行清理,清理从最老的日志文件开始。单位条 [500,10000] 2000 wal server
walFsyncDataSizeLimit [100*1024*1024,INT64_MAX] 100*1024*1024 wal server
randErrorChance [0,10000] 1 catalog both
randErrorDivisor telemetryInterval [1,INT64_MAX] 10001 catalog both
randErrorScope [0,INT64_MAX] catalog both
numOfCores CPU 核数 [1,100000] 2 是/重启生效 conf both
crashReporting 是否上报crash 0/1 企业版:0
社区版: 1
crash both
enableCoreFile 是否生成 core 文件 0/1 1 crash both
slowLogThreshold 慢查询门限值,大于等于为慢查询 [1, INT32_MAX] 10 秒 slowlog 客户端 服务端配置,下发给客户端
slowLogThresholdTest 慢查询门限值,大于等于为慢查询(仅用于测试) [0, INT32_MAX] INT32_MAX slowlog 客户端 服务端配置,下发给客户端
slowLogMaxLen 慢查询日志最大长度 [1,16384] 4096 slowlog 客户端 服务端配置,下发给客户端
slowLogScope 慢查询记录类型 ALL, QUERY, INSERT, OTHERS, NONE ALL slowlog 客户端 服务端配置,下发给客户端
slowLogExceptDb 指定的 db(目前只支持一个) 不上报慢查询 slowlog 客户端 服务端配置,下发给客户端

  • 修改系统变量

通过任意客户端修改系统变量,该系统变量的修改会被自动传递到集群中的所有 dnode 并被持久化,在集群重启后仍然有效。修改系统变量使用如下命令。


alter all dnodes '${systemVariableName}' '${value}';

  1. 校验新的系统变量取值是否在取值范围内,如果不在取值范围内则报错,并提示用户正确的取值范围。

  2. 使用 alter dnode dnode_id 会提示参数不合法。

  • dnode 局部变量

  • 查看 dnode 变量

  • 增加了类别 catetory 列,以区分不同类型的变量。

  • 目前,show dnode {dnodeId} variables 会显示适用于 dnode 的所有变量,包含局部变量和系统变量。

dnode_id | name | value | scope| category| =========================================================================================== 1 | firstEp | u3-31:6030 | cluster | local | 1 | secondEp | u3-31:6030 | cluster | local | 1 | fqdn | u3-31 | cluster | local | 1 | serverPort | 6030 | cluster | local | 1 | tempDir | /tmp/ | conf | local | 1 | minimalTmpDirGB | 1.000000 | query | local | 1 | shellActivityTimer | 3 | transport | local | 1 | compressMsgSize | -1 | compress | local | ... Query OK, 194 row(s) in set (0.010489s)

  • dnode 局部变量列表

该列表包含在 dnode 生效的配置参数(不包含全局配置参数)。

变量名称 说明 取值范围 默认值 动态修改 类别 适用范围 备注
forceReadConfig 强制使用配置文件中的参数。 [0,1] 0
firstEp taosd 或者 taos 启动时,主动连接的集群中首个 dnode 的 endpoint localhost:6030 cluster both
fqdn 数据节点的 FQDN。如果习惯 IP 地址访问,可设置为该节点的 IP 地址。 缺省为操作系统配置的第一个 hostname cluster both
secondEp taosd 或者 taos 启动时,如果 firstEp 连接不上,尝试连接集群中第二个 dnode 的 endpoint cluster both
serverPort taosd 启动后,对外服务的端口号 6030 cluster both
configDir 配置文件目录 /etc/taos/ conf both
logDir 日志目录 /var/log/taos/ 是/重启生效 conf both
scriptDir 配置文件目录 /etc/taos/ conf both
tempDir 该参数指定所有系统运行过程中的临时文件生成的目录 /tmp/ conf both
dataDir 数据目录 /var/lib/taos conf server
supportVnodes 节点支持的最大 vnode 数 [0,4096] CPU 核数的 2倍 conf server
numOfCommitThreads 异步落盘模式下的后台落盘线程数目 [1, 1024] 4 是/重启生效 tsdb server
debugFlag 日志级别 131 debug both
rpcDebugFlag 日志级别 131 debug both
simDebugFlag 日志级别 131 debug both
tmrDebugFlag 日志级别 131 debug both
uDebugFlag 日志级别 131 debug both
dDebugFlag 日志级别 131 debug server
fsDebugFlag 日志级别 131 debug server
idxDebugFlag 日志级别 131 debug server
mDebugFlag 日志级别 131 debug server
metaDebugFlag 日志级别 131 debug server
sDebugFlag 日志级别 131 debug server
smaDebugFlag 日志级别 131 debug server
sndDebugFlag 日志级别 131 debug server
stDebugFlag 日志级别 131 debug server
tdbDebugFlag 日志级别 131 debug server
tqDebugFlag 日志级别 131 debug server
tsdbDebugFlag 日志级别 131 debug server
udfDebugFlag 日志级别 131 debug server
vDebugFlag 日志级别 131 debug server
wDebugFlag 日志级别 131 debug server
qDebugFlag 日志级别 131 debug both
asyncLog 异步日志 0/1 1 log both
logKeepDays 日志保留天数 [-365000,365000] 0(1天内) log both
minimalLogDirGB 日志目录最小可用空间 [0.001, 10000000] 1GB log both
numOfLogLines 日志文件最大行数 [1000,2000000000] 10000000 log both
monitorFqdn taosKeeper 监控服务的 FQDN 是/重启生效 monitor server
monitorPort taosKeeper 监控服务端口号 [1,65056] 6043 是/重启生效 monitor server
tsShareConnLimit 一个链接可以共享的请求的数目,取值范围 1-512,默认值 10 1-512 10 是/重启生效
minimalTmpDirGB 该参数指定临时文件夹所需要保留的最小空间,小于这个空间,taosd 服务启动会失败。 [0.001, 10000000] 1 query both
tagFilterCache 0/1 0 query both
filterScalarMode 强制使用标量过滤模式。0:关闭;1:开启。 0/1 0 query server
numOfMnodeReadThreads mnode 用来处理读请求的线程数目 [1,4] CPU核数的1/8 是/重启生效 query server
numOfQnodeQueryThreads qnode 用来处理请求的线程数 [1, 1024] CPU核数的2倍 是/重启生效 query server
numOfVnodeFetchThreads vnode 用来处理数据请求和控制消息的线程数目 [4,1024] CPU核数的1/4 是/重启生效 query server
numOfVnodeQueryThreads vnode 用来处理查询请求的线程数目 [1, 1024] CPU核数的2倍 是/重启生效 query server
numOfVnodeRsmaThreads vnode 用来处理 rsma 数据生成的线程数 [1,1024] max(cpu核数,4) 是/重启生效 query server
pqSortMemThreshold 执行计划中sort Node判断是否使用优先级队列进行纯内存排序的内存估算阈值, 通过Table Scan的行长度以及配置大小估算出内存中能存下的最大行数, 若limit的行数小于此行数, 则会进入该逻辑 单位: M
1. 服务端配置, 不能动态调整
2. 取值范围: 1 ~ 10240, 即1MB ~ 10GB
256 query server
queryBufferSize 现在 3.0 没有应用内存控制策略,该参数暂不起作用 [-1, 500000000000] -1 是/重启生效 query server
rsyncPort rsync 端口号 [1,65535] 873 是/重启生效 stream both
checkpointBackupDir 是/重启生效 stream server
maxStreamBackendCache 单个vnode上rocksdb的cache限制,到达此阈值之后,会进行write buffer 的 flush, 可能进一步触发rocksdb 内部的compaction. 单位: M
1. 服务端的配置, 不能动态调整,如果需要调整,需要重启taosd
2. 如果用户配置为M,会向上取整到2^N, 假设用户配置25,那么会去整到32
3. 取值范围: 16~1024
128 是/重启生效 stream server
ratioOfVnodeStreamThreads [0.01,4] 0.5 是/重启生效 stream server
snodeAddress 是/重启生效 stream server
streamAggCnt [2,INT32_MAX] INT32_MAX stream server
streamBufferSize 流计算缓存大小 [0,INT64_MAX] 128M 是/重启生效 stream server
streamSinkDataRate [0.1,5] 2 是/重启生效 stream server
minDiskFreeSize tsdb server
minimalDataDirGB tsdb server
bypassFlag both

  • 查看 dnode 只读局部变量

使用以下命令查看 readonly 变量。(readonly 变量大多为系统信息,仅做展示但不可修改)


show dnode {dnodeId} variables readonly

  • dnode 只读局部变量列表

变量名称 说明 取值范围 默认值 动态修改 类别 适用范围 备注
buildinfo 版本打包信息 build both
compatible_version 兼容版本号 build both
gitinfo 打包使用的 commit id build both
version taosd 版本号 build both
openMax <系统信息> os both
os machine <系统信息> os both
os nodename <系统信息> os both
os release <系统信息> os both
os sysname <系统信息> os both
os version <系统信息> os both
pageSizeKB <系统信息> os both
streamMax <系统信息> os both
totalMemoryKB <系统信息> os both
avx <系统信息> perf both
avx2 <系统信息> perf both
avx512 <系统信息> perf both
AVX512Enable 是否开启 AVX512 0/1 0 perf both
fma <系统信息> perf both
simdEnable 是否开启simd 0/1 0 perf both
ssd42 <系统信息> perf both

  • 修改 dnode 局部变量

dnode 的局部变量被修改后只对当前 dnode 生效,并被自动持久化,在 dnode 重启后仍然有效。


alter dnode ${dnodeId} '${dnodeVariableName} ${value}' alter all dnodes '${dnodeVariableName} ${value}'

  1. 检查局部变量是否支持动态修改,如果不支持则报错,提示用户当前局部变量不支持修改。

  2. 检查新的局部变量取值是否在取值范围内,如果不在取值范围内则报错,并提示用户当前局部变量的取值范围。

  • 客户端(taosc)局部变量

  • 查看客户端变量

  • 增加了类别 catetory 列,以区分不同类型的变量。

  • show local variables 显示应用于当前客户端 (taosc实例)的变量


taos> show local variables; name | value | scope| category| ==================================================================================== firstEp | u3-31:6030 | cluster | local| secondEp | u3-31:6030 | cluster | local| fqdn | u3-31 | cluster | local| serverPort | 6030 | cluster | local| tempDir | /tmp/ | conf | local| minimalTmpDirGB | 1.000000 | query | local| shellActivityTimer | 3 | transport | local| compressMsgSize | -1 | compress | local| queryPolicy | 1 | query | local| enableQueryHb | 1 | query | local| enableScience | 0 | query | local| querySmaOptimize | 0 | query | local| queryPlannerTrace | 0 | query | local| queryNodeChunkSize | 32768 | query | local| ... Query OK, 80 row(s) in set (0.001913s)

  • 客户端(taosc)局部变量列表

该列表包含在 taosc 生效的配置参数(不包含全局配置参数)。

变量名称 说明 取值范围 默认值 动态修改 类别 适用范围 备注
firstEp taosd 或者 taos 启动时,主动连接的集群中首个 dnode 的 endpoint localhost:6030 cluster both
fqdn 数据节点的 FQDN。如果习惯 IP 地址访问,可设置为该节点的 IP 地址。 缺省为操作系统配置的第一个 hostname cluster both
secondEp taosd 或者 taos 启动时,如果 firstEp 连接不上,尝试连接集群中第二个 dnode 的 endpoint cluster both
serverPort taosd 启动后,对外服务的端口号 6030 cluster both
configDir 配置文件目录 conf both
logDir 日志目录 /var/log/taos/ conf both
tempDir 临时文件路径 conf both
debugFlag 日志级别 131 debug both
rpcDebugFlag 日志级别 131 debug both
simDebugFlag 日志级别 131 debug both
tmrDebugFlag 日志级别 131 debug both
uDebugFlag 日志级别 131 debug both
qDebugFlag 日志级别 131 debug both
cDebugFlag 日志级别 131 debug client
jniDebugFlag 日志级别 131 debug client
asyncLog 异步日志 0/1 1 log both
logKeepDays 日志保留天数 [-365000,365000] 0(1天内) log both
minimalLogDirGB 日志目录最小可用空间 [0.001, 10000000] 1GB log both
numOfLogLines 日志文件最大行数 [1000,2000000000] 10000000 log both
minimalTmpDirGB 该参数指定临时文件夹所需要保留的最小空间,小于这个空间,taosd 服务启动会失败。 [0.001, 10000000] 1 Y query both
tagFilterCache 0/1 0 query both
metaCacheMaxSize 指定单个客户端元数据缓存大小的最大值,单位 MB [-1,INT32_MAX] -1 (无限制) catalog client
useAdapter 是否使用 adapter 0/1 0 insert client
minIntervalTime interval窗口的最小允许值 [1,1000000]
单位:同数据库时间单位
1 query client
minSlidingTime sliding 的最小允许值 [1,1000000]
单位:同数据库时间单位
1 query client
enableQueryHb 0/1 1 query client
enableScience 是否开启科学计数法显示浮点数 0/1 0 query client
keepColumnName Last、First、LastRow 函数查询且未指定别名时,自动设置别名为列名(不含函数名),因此 order by 子句如果引用了该列名将自动引用该列对应的函数 1 表示自动设置别名为列名(不包含函数名)
0 表示不自动设置别名。
0 query client
maxTsmaCalcDelay 单位 s,用于控制用户可以接受的 TSMA 计算延迟,若 TSMA 的计算进度与最新时间差距在此范围内, 则该 TSMA 将会被使用, 若超出该范围, 则不使用, 最小值: 600(10 分钟), 最大值: 86400(1 天) 默认值: 600(10 分钟) query client
multiResultFunctionStarReturnTags 查询超级表时,last(\*)/last_row(\*)/first(\*) 是否返回标签列;查询普通表、子表时,不受该参数影响 0:不返回标签列,1:返回标签 0 query client
numOfTaskQueueThreads Taos-c-driver 业务callback处理线程数 最大值为10 CPU核数的1/2 是/重启生效 query client
queryMaxConcurrentTables [INT64_MIN,INT64_MAX] 200 query client
queryPlannerTrace 查询计划是否输出详细日志 0/1 0 query client
queryNodeChunkSize [1024,128*1024] 30*1024 query client
queryPolicy 查询语句的执行策略 1: 只使用 vnode,不使用 qnode; 2: 没有扫描算子的子任务在 qnode 执行,带扫描算子的子任务在 vnode 执行; 3: vnode 只运行扫描算子,其余算子均在 qnode 执行 1 query client
queryTableNotExistAsEmpty query clinet
querySmaOptimize 用于控制查询时是否使用TSMA 1为使用, 0为不使用即从原始数据查询. 0 query client
queryUseNodeAllocator 0/1 1 query client
tsmaDataDeleteMark 单位毫秒, 与流计算参数`deleteMark`一致, 用于控制流计算中间结果的保存时间, 默认值为: 1d, 最小值为1h. 因此那些距最后一条数据时间大于配置参数的历史数据将不保存流计算中间结果, 因此若修改这些时间窗口内的数据, TSMA的计算结果中将不包含更新的结果. 即与查询原始数据结果将不一致. [60*60*1000,INT64_MAX] 1天 query client
smlAutoChildTableNameDelimiter schemaless client
smlChildTableName schemaless client
smlDot2Underline 只在client端起作用,目的是为了兼容 schemaless 写入协议中已有存在点号(.)的逻辑。 1: schemaless自动建表的表名如果有点号(.),会自动替换为下划线(_)
0: 不进行替换,保留 "."
Note: 如果配置了 smlChildTableName ,手动指定子表名的话,子表名里有点号(.),同样按照上面的配置逻辑处理。
1 schemaless client
smlTagName schemaless tag 为空时默认的 tag 名字 _tag_null schemaless client
smlTsDefaultName schemaless自动建表的时间列名字通过该配置设置 _ts schemaless client
maxInsertBatchRows
bypassFlag both

  • 查看客户端 (taosc) 只读局部变量

使用以下命令查看 readonly 变量。(readonly 变量大多为系统信息,仅做展示但不可修改)


show local variables readonly

  • 客户端 (taosc) 只读局部变量列表

变量名称 说明 取值范围 默认值 动态修改 类别 适用范围 备注
buildinfo 版本打包信息 build both
compatible_version 兼容版本号 build both
gitinfo 打包使用的 commit id build both
version taosd 版本号 build both
openMax <系统信息> os both
os machine <系统信息> os both
os nodename <系统信息> os both
os release <系统信息> os both
os sysname <系统信息> os both
os version <系统信息> os both
pageSizeKB <系统信息> os both
streamMax <系统信息> os both
totalMemoryKB <系统信息> os both
avx <系统信息> perf both
avx2 <系统信息> perf both
avx512 <系统信息> perf both
AVX512Enable 是否开启 AVX512 0/1 0 perf both
fma <系统信息> perf both
simdEnable 是否开启simd 0/1 0 perf both
ssd42 <系统信息> perf both

  • 修改客户端局部变量

通过 taos shell 或 API 修改客户端局部变量后,在该 taos shell 实例或客户端程序的运行期间有效,退出重启后失效,需要重新设置。


alter local '${localVariableName} {value}';

  1. 检查局部变量是否支持动态修改,如果不支持则报错,提示用户当前局部变量不支持修改。

  2. 检查新的局部变量取值是否在取值范围内,如果不在取值范围内则报错,并提示用户当前局部变量的取值范围。

  • taosd 行为

  • 启动时配置文件中 forceReadConfig 为 1

taosd 成功启动后会自动将所有生效的系统变量和局部变量(无论它们的来源是配置文件还是默认值)自动持久化到内部存储中,该内部存储对用户不可见不可修改。人工修改内部存储的变量会导致不可预测的产品行为,涛思数据不对此行为负责。

集群中每个节点的首次启动无论 forceReadConfig 是否打开均需要读取指定配置文件或者使用默认配置文件

  • 启动时配置文件中 forceReadConfig 为 0

如果启动时关闭 forceReadConfig ,则 taosd 仅会读取 dataDir 参数,然后自动使用系统上次运行时持久化的系统变量和局部变量。如果本次启动为该集群中本节点 taosd 的首次启动,或者集群中不存在内部持久化的系统变量和局部变量,则 taosd 会自动使用默认配置文件启动。如果默认配置文件不存在或存储配置错误,则启动失败。

  • 修改系统变量或 dnode 局部变量

在集群首次启动以后,所有的配置参数修改都推荐使用 SQL 命令进行,否则极易造成配置参数的错误、不一致以及过往配置的丢失。

部分参数需要重启后生效,则不改动当前内存中的值,仅做持久化,避免前后参数不一致带来的问题。

  • 细分场景

  1. 集群首次启动:

    1. 集群中的第一个节点,必须指定配置文件或者使用默认配置文件

    2. 集群中的第二到第N个节点,同上,如果配置文件中存在系统变量不一致的情况,报错退出

  2. 集群中的某个节点重启(在集群中其它节点仍然存活的情况下):

    1. (推荐)指定配置文件并且forceReadConfig配置为0,需保证配置文件中包含 dataDir ,则使用持久化的局部变量;同时校验参数版本号是否落后于集群版本,如果落后于集群,则从集群中重新拉取系统变量,否则使用本地存储的系统变量。

    2. (不推荐)指定配置文件并且forceReadConfig配置为1,则全部使用配置文件(配置文件中没有的使用默认值)启动,如果存在与集群中系统变量不一致的情况则报错退出。重启成功后会自动覆盖持久化的局部变量

  3. 集群停止后,重新启动集群中的第一个节点

    1. (推荐)指定配置文件并且forceReadConfig配置为0,需保证配置文件中包含 dataDir ,则使用持久化的系统变量和局部变量。

    2. (不推荐)指定配置文件并且forceReadConfig配置为1,则全部使用配置文件(配置文件中没有的使用默认值)启动,重启成功后会自动覆盖持久化的系统变量和局部变量

  • taos shell 行为

  • 启动 taos shell

taos shell 启动时如果指定配置文件则使用该配置文件,如果不指定配置文件则使用默认配置文件。如果指定的配置文件或默认配置文件中有配置错误则启动失败。

  • 修改 taos shell 所在客户端配置

如果希望对 taos shell 所使用的客户端配置参数进行修改,最佳实践是修改配置文件(以达到持久化目的)并重启 taos shell。如果使用 SQL 命令动态修改,也建议同步修改配置文件,否则下次重启后要重复进行同样的动态修改。

  • 如何新增参数 (供研发参考)

如何增加配置参数

  • 增加磁盘 disk id 检测功能

背景:

用户在停机后,重启数据库服务前,可能会忘记进行磁盘挂载,在一个空目录下重启数据库服务,并且用户不清楚数据已经丢失,可能运行一段时间才会发现。这样无疑给用户造成了损失,并且增加了运维成本。

功能概述:

基于配置参数的持久化功能,taosd 会在首次启动时,持久化各个数据目录对应的 disk id ,在 taosd 重启时,会校验当前各个数据目录所对应的 disk id 和之前记录的 disk id 是否一致,如果不一致则退出数据库服务,并提示用户检查是否磁盘忘记挂载。如果用户主动切换磁盘,可以通过设置参数diskIDCheckEnabled 跳过检查。

  • taosd 行为

集群初始化启动

集群中的节点重新启动

集群的升级

全局配置参数

更新立即生效

  1. 集群中的第一个节点启动时,使用第一个节点的配置文件中的全局配置参数持久化全局配置参数,如果没有在配置文件中配置,则使用全局配置参数系统的默认值。

  2. 其余节点加入集群时,发起请求拉取已经持久化的全局配置参数。

校验参数版本号是否落后于集群,如果落后于集群,则从集群中重新拉取系统变量,否则使用本地存储(dataDir中)的全局配置参数。

  1. 升级时,以下行为不需要特别关注

    1. 增加了全局配置参数

    2. 删除了配置参数

  2. 升级时以下行为需要特殊关注

    1. 修改了全局配置参数的默认值

          即使修改了全局配置参数的默认值,升级后仍然使用集群中持久化的值,如果需要默认值生效,需要手动执行 alter

    全局配置参数

    需要重启生效

    同上

    同上

    1. 升级时,以下行为不需要特别关注

      1. 删除了配置参数

    2. 升级时以下行为需要特殊关注

      1. 修改了全局配置参数的默认值

            即使修改了全局配置参数的默认值,升级后仍然使用集群中持久化的值,如果需要默认值生效,需要手动执行 alter 。

        1. 增加了配置参数

              升级后,更新此类型配置参数需要再次重启才能生效。

        局部配置参数

        动态计算

        集群节点在首次启动时,将配置文件中配置的局部配置参数持久化到本地,如没有设置,则根据机器配置计算得出。

        1. (推荐)指定配置文件并且forceReadConfig配置为0,需保证配置文件中包含 dataDir ,我们将会使用持久化的局部变量或动态计算结果。具体行为可以参考以下列表:

          1. 使用持久化的局部配置参数,如果发生硬件资源变化,需手动调整局部配置参数以适配新的硬件资源。

            1. 首次启动时,在配置文件中配置过的局部配置参数

            2. 使用 alter 命令更改过的局部配置参数

          2. 使用动态计算结果,如果发生硬件资源变化,将重新计算配置参数的值,无需手动调整。

            1. 既没有在配置文件中配置,也没有使用 alter 命令更改的配置参数

        2. (不推荐)指定配置文件并且forceReadConfig配置为1,则全部使用配置文件(配置文件中没有的使用动态计算结果)启动。

        1. 升级时,以下行为不需要特别关注

          1. 删除了配置参数

          2. 新增了动态计算的参数

        2. 升级时以下行为需要特殊关注

          1. 修改了动态计算参数的计算公式

            1. 该配置参数首次启动在配置文件中配置或使用 alter 命令更改过的配置参数,即使在新版本修改了动态计算参数的计算公式,升级后仍会使用已经持久化的值 ,需要用户手动 alter 调整配置参数。

            2. 如果该配置参数并没有在配置文件中配置,同时也没有使用 alter 命令修改过;那么升级后会重新计算该配置参数的值。

        局部配置参数

        集群节点在首次启动时,将配置文件中配置的局部配置参数持久化到本地,如没有设置,则使用默认参数值。

        1. (推荐)指定配置文件并且forceReadConfig配置为0,需保证配置文件中包含 dataDir ,我们将会使用持久化的局部变量。

        2. (不推荐)指定配置文件并且forceReadConfig配置为1,则全部使用配置文件(配置文件中没有的使用默认值)启动。

        1. 升级时,以下行为不需要特别关注

          1. 删除了配置参数

        2. 升级时以下行为需要特殊关注

          1. 修改了全局配置参数的默认值

                即使修改了全局配置参数的默认值,升级后仍然使用集群中持久化的值,如果需要默认值生效,需要手动执行 alter 。

            1. 增加了配置参数

                  升级后,更新此类型配置参数需要再次重启才能生效。

            • forceReadConfig 行为

            如果您不想使用配置参数的持久化功能,可以使用 forceReadConfig ,强制从配置文件读取配置参数覆盖本地持久化的配置参数,但需要注意 forceReadConfig 仅对局部配置参数生效,全局配置参数仍然以集群持久化的值为准

            4. 兼容性

            1. 新建集群,无兼容性问题

            2. 旧集群升级

              1. 首次启动使用指定或默认的配置文件启动,无兼容性问题

              2. 首次启动后不建议再通过修改配置文件的方式修改配置,如果通过修改配置文件的方式则重启时要指定配置文件

              3. 首次启动后推荐只使用动态修改系统变量或局部变量的方式,再次启动时不应指定配置文件,则再次启动时会自动使用内部持久化存储的系统变量和局部变量,无兼容性问题

            3. 降级

              1. 仅可降级到 做完 sdb 处理逻辑之后的版本,具体版本会在发版后补充到这里。

              2. 如果降级到不支持本特性的版本,则降级后要指定配置文件启动或使用默认配置文件启动,曾经做过的配置修改均会丢失,但无兼容性问题。

            5. 运维

            1. 本特性的主要价值在于对运维的帮助:修改系统变量或局部变量立即生效无需重启,并在下次重启后依然有效。

            2. 最佳实践:集群首次启动成功后不再使用配置文件,通过 SQL 命令修改系统变量或局部变量,重新启动 taosd 时不指定配置文件

            3. Linux/Windows 平台的 systemd 脚本有可能需要进行修改,service restart 所对应的命令行参数不能指定配置文件

            6. 使用场景

            动态修改系统变量或局部变量立即生效无需重启,并在下次重启后依然有效。

            7. 约束和限制

            1. 全局配置参数在出现网络分区之后恢复时,可能会出现各个 dnode 不一致情况。

            2. 全局配置参数在变更时,可能会存在短时间的不一致。

            3. 全局配置参数存放在 sdb 中,mnode 重启回放日志时,可能会出现配置参数修改内容丢失,等待 mnode 彻底恢复后,恢复正常。


            网站公告

            今日签到

            点亮在社区的每一天
            去签到