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时区系统时区sysconfserver不建议下发至客户端,
locale系统区位信息及编码格式系统 localsysconfserver不建议下发至客户端,

字符集编码
系统 charsetsysconfserver
enableWhiteList是否打开白名单功能[0,1]0permissionserver
statusIntervaldnode 向 mnode 报告状态间隔[1,30]1 秒statisserver
monitor是否开启监控0,11 开启monitorserver
monitorInterval监控上报间隔[1,86400]30 秒monitorserver
monitorComp在上报 monitor 消息时,是否采用压缩方式0: 不压缩, 1:压缩0是/重启生效monitorserver
monitorForceV2是否使用V2版本监控0/11monitorserver
monitorLogProtocol是否打印监控日志0/10monitorserver
monitorMaxLogs在每个 montior 上报时间间隔,可以缓存的待上报日志条数[1,1000000]100monitorserver
audit是否开启申计功能0:不开启,1:开启1auditserver
auditCreateTable是否针对建表开启申计功能0:不开启,1:开启1auditserver
auditInterval申计上报周期[500,200000] 毫秒5000auditserver
compressMsgSize表示是否对RPC消息进行压缩-1: 所有消息都不压缩
0: 所有消息都压缩
N: N>0,表示大于N字节的消息进行压缩
-1是/重启生效compressboth
compressor默认压缩算法ZSTD_COMPRESSORcompressserver
curRangecurrent quantization intervals[0,65536]100compressserver
dPrecisiondouble column precision[0.0,1000000.0]1E-16compressserver
fPrecisionfloat column precision[0.0, 100000.0]0.00000001compressserver
ifAdtFseADT-FSE algorithom or original huffman algorithom0,10compressserver
maxRangemax quantization intervals[0,65536]500是/重启生效/暂不支持compressserver
arbCheckSyncIntervalSec双活模块同步间隔时间[1,60*24*2]10否/暂不支持dual replicaserver
arbHeartBeatIntervalSec双活模块心跳间隔时间[1,60*24*2]5否/暂不支持dual replicaserver
arbSetAssignedTimeoutSec双活模块超时时间[1,60*24*2]30否/暂不支持dual replicaserver
encryptAlgorithm加密算法否/暂不支持encryptserver
encryptScope加密范围否/暂不支持encryptserver
experimental实验开关0/11是/重启生效queryboth
maxTsmaNum集群内一共可创建TSMA个数受参数`maxTsmaNum`限制.注意, 由于TSMA后台计算使用流计算, 因此每创建一条TSMA, 将会创建一条流, 因此能够创建的TSMA条数也受当前已经存在的流条数和最大可创建流条数限制.[0,3]3queryserver
queryRsmaTolerance表示用于判定查询哪一级 rsma 数据时的容忍时间,单位为毫秒[0, 900000]1000queryserver
queryRspPolicy查询响应策略0: delay
1: quick
0queryserver
countAlwaysReturnValuecount/hyperloglog函数在输入数据为空或者NULL的情况下是否返回值0:返回空行1:返回 01queryboth
uptimeIntervaldnode 向 mnode 报告启动状态的时间间隔,单位为秒[1,100000]300statisserver
timeseriesThresholdvnode 测点数变化上报门限值[0,2000]50statisserver
s3Accesskeys3 密钥是/重启生效s3server
s3BucketNames3 桶名是/重启生效s3server
s3Endpoints3 使用的 endpoint是/重启生效s3server
s3PageCacheSizes3 page cache 缓存页数目,单位:页。最小值:4;最大值:1024*1024*1024。[4,1024*1024*1024]4096是/重启生效s3server
s3UploadDelaySecdata 文件不再变动后延迟多久上传至 s3,单位:秒[1,60 * 60 * 24 * 30]60s3server
mndSdbWriteDelta单个文件的日志数目阈值,到达此阈值,mnode元数据会落盘,此时将产生新的wal文件。200sdbserver
checkpointIntervalcheckponit 同步间隔[60,1800]60streamserver
concurrentCheckpoint当前 checkpoint[1,10]1streamserver
disableStream是否启用流计算功能0/10是/重启生效streamserver
resolveFQDNRetryTime启动时,解析FQDN失败会重试,一秒一次,该参数指定重试的次数单位秒100syncserver
syncElectIntervalraft定时器在 syncElectInterval 与 2 * syncElectInterval (2.5秒-5秒)之间选择一个随机值,作为下次发起选举的时间。单位:毫秒2500syncserver
syncHeartbeatIntervalraft leader 向follwer发送心跳消息的时间间隔,以维持自己的leader状态。单位:毫秒1000syncserver
syncHeartbeatTimeoutraft leader 在 指定时间内如果收不到quorum-1个follower 心跳消息的回应,则认为当前集群内没有quorum个节点互通,无法正常工作。对于新来的请求,直接拒绝服务。单位:毫秒20000syncserver
syncSnapReplMaxWaitN[16,4096]128syncserver
syncLogBufferMemoryAllowed[104857600,INT64_MAX]0syncserver
telemetryInterval用来上传 telemetry 的时间间隔,单位为秒,仅用于内部测试[0,200000]43200telemetryboth
telemetryPort上传 telemtry 信息的服务所监听的端口,仅用于内部测试[1, 65056]80telemetryboth
telemetryReporting是否允许 TDengine 采集和上报
基本使用信息
0: 不允许
1:允许
1telemetryboth
telemetryServer上传 telemetry 信息的域名,
仅用于内部测试
telemetry.taosdata.comtelemetryboth
mqRebalanceInterval检测rebalance的间隔时间2 秒tmqserver
tmqMaxTopicNum支持最大的 topic 数量tmqserver
tmqRowSizetmqserver
transPullupInterval当有对 mnode 操作因为错误而未执行结束时,mnode 下次发起重试的时间间隔[1,10000]2transactionserver
keepAliveIdle空闲连接保持时间[1,7200000]60transportboth
maxRetryWaitTime重连最大超时时间[0,86400000]10000是/重启生效transportboth
maxShellConns一个 dnode 容许的连接数[10,50000000]5000是/重启生效transportserver
numOfRpcSessions创建的最大连接数[1,100000]30000是/重启生效transportboth
numOfRpcThreadsRPC的收发线程数目最大值为 20CPU核数的1/2是/重启生效transportboth
rpcQueueMemoryAllowed接收到的 RPC 消息,如果没有被处理,会暂存在 dnode 的待处理队列中;通过这个值控制该队列的大小,避免累积消息过多,导致内存无限上涨直到 OOM100M ~ 10G系统总内存的 1/10transportboth
shellActivityTimer[1,120]3是/重启生效transportboth
timeToGetAvailableConn获得可用连接的最长等待时间,单位为毫秒[10,50000000]500000是/重启生效transportboth
tsReadTimeout单个请求最小超时时间,取值范围 64-604800,单位为秒,默认值 900
compactPullupIntervaltsdbserver
cacheLazyLoadThresholdtsdbserver
maxCompactConcurrency控制 1 个 dnode 上 compact 任务的并发度[0, 16],0 表示不限制2tsdbserver
retentionSpeedLimitMB数据文件多级存储间迁移限速[0,1024]0 不限速tsdbserver
trimVDbIntervalSec数据文件迁移触发周期[1,100000]3600tsdbserver
ttlChangeOnWrite表的修改操作是否改变表的TTL0,10 不改变ttl服务端
ttlBatchDropNumttlserver
ttlFlushThresholdttlserver
ttlPushIntervalttl 检测超时频率ttlserver
ttlUnitttl 参数的单位ttlserver
udf是否启动 udf 功能是/重启生效udfserver
udfdLdLibPath是/重启生效udfserver
udfdResFuncs是/重启生效udfserver
mndLogRetention累积文件的日志数目阈值,到达此阈值会进行清理,清理从最老的日志文件开始。单位条[500,10000]2000walserver
walFsyncDataSizeLimit[100*1024*1024,INT64_MAX]100*1024*1024walserver
randErrorChance[0,10000]1catalogboth
randErrorDivisortelemetryInterval[1,INT64_MAX]10001catalogboth
randErrorScope[0,INT64_MAX]catalogboth
numOfCoresCPU 核数[1,100000]2是/重启生效confboth
crashReporting是否上报crash0/1企业版:0
社区版: 1
crashboth
enableCoreFile是否生成 core 文件0/11crashboth
slowLogThreshold慢查询门限值,大于等于为慢查询[1, INT32_MAX]10 秒slowlog客户端服务端配置,下发给客户端
slowLogThresholdTest慢查询门限值,大于等于为慢查询(仅用于测试)[0, INT32_MAX]INT32_MAXslowlog客户端服务端配置,下发给客户端
slowLogMaxLen慢查询日志最大长度[1,16384]4096slowlog客户端服务端配置,下发给客户端
slowLogScope慢查询记录类型ALL, QUERY, INSERT, OTHERS, NONEALLslowlog客户端服务端配置,下发给客户端
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
firstEptaosd 或者 taos 启动时,主动连接的集群中首个 dnode 的 endpointlocalhost:6030clusterboth
fqdn数据节点的 FQDN。如果习惯 IP 地址访问,可设置为该节点的 IP 地址。缺省为操作系统配置的第一个 hostnameclusterboth
secondEptaosd 或者 taos 启动时,如果 firstEp 连接不上,尝试连接集群中第二个 dnode 的 endpointclusterboth
serverPorttaosd 启动后,对外服务的端口号6030clusterboth
configDir配置文件目录/etc/taos/confboth
logDir日志目录/var/log/taos/是/重启生效confboth
scriptDir配置文件目录/etc/taos/confboth
tempDir该参数指定所有系统运行过程中的临时文件生成的目录/tmp/confboth
dataDir数据目录/var/lib/taosconfserver
supportVnodes节点支持的最大 vnode 数[0,4096]CPU 核数的 2倍confserver
numOfCommitThreads异步落盘模式下的后台落盘线程数目[1, 1024]4是/重启生效tsdbserver
debugFlag日志级别131debugboth
rpcDebugFlag日志级别131debugboth
simDebugFlag日志级别131debugboth
tmrDebugFlag日志级别131debugboth
uDebugFlag日志级别131debugboth
dDebugFlag日志级别131debugserver
fsDebugFlag日志级别131debugserver
idxDebugFlag日志级别131debugserver
mDebugFlag日志级别131debugserver
metaDebugFlag日志级别131debugserver
sDebugFlag日志级别131debugserver
smaDebugFlag日志级别131debugserver
sndDebugFlag日志级别131debugserver
stDebugFlag日志级别131debugserver
tdbDebugFlag日志级别131debugserver
tqDebugFlag日志级别131debugserver
tsdbDebugFlag日志级别131debugserver
udfDebugFlag日志级别131debugserver
vDebugFlag日志级别131debugserver
wDebugFlag日志级别131debugserver
qDebugFlag日志级别131debugboth
asyncLog异步日志0/11logboth
logKeepDays日志保留天数[-365000,365000]0(1天内)logboth
minimalLogDirGB日志目录最小可用空间[0.001, 10000000]1GBlogboth
numOfLogLines日志文件最大行数[1000,2000000000]10000000logboth
monitorFqdntaosKeeper 监控服务的 FQDN是/重启生效monitorserver
monitorPorttaosKeeper 监控服务端口号[1,65056]6043是/重启生效monitorserver
tsShareConnLimit一个链接可以共享的请求的数目,取值范围 1-512,默认值 101-51210是/重启生效
minimalTmpDirGB该参数指定临时文件夹所需要保留的最小空间,小于这个空间,taosd 服务启动会失败。[0.001, 10000000]1queryboth
tagFilterCache0/10queryboth
filterScalarMode强制使用标量过滤模式。0:关闭;1:开启。0/10queryserver
numOfMnodeReadThreadsmnode 用来处理读请求的线程数目[1,4]CPU核数的1/8是/重启生效queryserver
numOfQnodeQueryThreadsqnode 用来处理请求的线程数[1, 1024]CPU核数的2倍是/重启生效queryserver
numOfVnodeFetchThreadsvnode 用来处理数据请求和控制消息的线程数目[4,1024]CPU核数的1/4是/重启生效queryserver
numOfVnodeQueryThreadsvnode 用来处理查询请求的线程数目[1, 1024]CPU核数的2倍是/重启生效queryserver
numOfVnodeRsmaThreadsvnode 用来处理 rsma 数据生成的线程数[1,1024]max(cpu核数,4)是/重启生效queryserver
pqSortMemThreshold执行计划中sort Node判断是否使用优先级队列进行纯内存排序的内存估算阈值, 通过Table Scan的行长度以及配置大小估算出内存中能存下的最大行数, 若limit的行数小于此行数, 则会进入该逻辑单位: M
1. 服务端配置, 不能动态调整
2. 取值范围: 1 ~ 10240, 即1MB ~ 10GB
256queryserver
queryBufferSize现在 3.0 没有应用内存控制策略,该参数暂不起作用[-1, 500000000000]-1是/重启生效queryserver
rsyncPortrsync 端口号[1,65535]873是/重启生效streamboth
checkpointBackupDir是/重启生效streamserver
maxStreamBackendCache单个vnode上rocksdb的cache限制,到达此阈值之后,会进行write buffer 的 flush, 可能进一步触发rocksdb 内部的compaction.单位: M
1. 服务端的配置, 不能动态调整,如果需要调整,需要重启taosd
2. 如果用户配置为M,会向上取整到2^N, 假设用户配置25,那么会去整到32
3. 取值范围: 16~1024
128是/重启生效streamserver
ratioOfVnodeStreamThreads[0.01,4]0.5是/重启生效streamserver
snodeAddress是/重启生效streamserver
streamAggCnt[2,INT32_MAX]INT32_MAXstreamserver
streamBufferSize流计算缓存大小[0,INT64_MAX]128M是/重启生效streamserver
streamSinkDataRate[0.1,5]2是/重启生效streamserver
minDiskFreeSizetsdbserver
minimalDataDirGBtsdbserver
bypassFlagboth

  • 查看 dnode 只读局部变量

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

 

show dnode {dnodeId} variables readonly

  • dnode 只读局部变量列表

变量名称说明取值范围默认值动态修改类别适用范围备注
buildinfo版本打包信息buildboth
compatible_version兼容版本号buildboth
gitinfo打包使用的 commit idbuildboth
versiontaosd 版本号buildboth
openMax<系统信息>osboth
os machine<系统信息>osboth
os nodename<系统信息>osboth
os release<系统信息>osboth
os sysname<系统信息>osboth
os version<系统信息>osboth
pageSizeKB<系统信息>osboth
streamMax<系统信息>osboth
totalMemoryKB<系统信息>osboth
avx<系统信息>perfboth
avx2<系统信息>perfboth
avx512<系统信息>perfboth
AVX512Enable是否开启 AVX5120/10perfboth
fma<系统信息>perfboth
simdEnable是否开启simd0/10perfboth
ssd42<系统信息>perfboth

  • 修改 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 生效的配置参数(不包含全局配置参数)。

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

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

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

 

show local variables readonly

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

变量名称说明取值范围默认值动态修改类别适用范围备注
buildinfo版本打包信息buildboth
compatible_version兼容版本号buildboth
gitinfo打包使用的 commit idbuildboth
versiontaosd 版本号buildboth
openMax<系统信息>osboth
os machine<系统信息>osboth
os nodename<系统信息>osboth
os release<系统信息>osboth
os sysname<系统信息>osboth
os version<系统信息>osboth
pageSizeKB<系统信息>osboth
streamMax<系统信息>osboth
totalMemoryKB<系统信息>osboth
avx<系统信息>perfboth
avx2<系统信息>perfboth
avx512<系统信息>perfboth
AVX512Enable是否开启 AVX5120/10perfboth
fma<系统信息>perfboth
simdEnable是否开启simd0/10perfboth
ssd42<系统信息>perfboth

  • 修改客户端局部变量

通过 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 彻底恢复后,恢复正常。

            本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
            如若转载,请注明出处:http://www.pswp.cn/news/911673.shtml
            繁体地址,请注明出处:http://hk.pswp.cn/news/911673.shtml
            英文地址,请注明出处:http://en.pswp.cn/news/911673.shtml

            如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

            相关文章

            无人机神经网络模块运行与技术难点

            一、神经网络模块的运行方式 1. 分层处理架构 感知层 多模态数据融合&#xff1a;通过八元数卷积网络&#xff08;OCNN&#xff09;统一处理LiDAR、摄像头、IMU等异构传感器数据&#xff0c;将点云坐标&#xff08;x/y/z&#xff09;、图像RGB与光流信息编码至8维虚部&#…

            前端react框架实现打包时间动态加入配置展示在指定页面

            注意&#xff1a; 当前方法特定为 create-react-app 构建框架&#xff0c;其他的构建流程不同&#xff0c;不能直接照搬 react-scripts 的方式。 ✅ 目标&#xff1a; 在 React 打包&#xff08;build&#xff09;时&#xff0c;自动将当前时间写入代码中某个变量或 console…

            原子操作(CAS)

            原子操作 原子操作原理什么是原子操作&#xff1f;原子性原子变量相关接口内存序 shared_ptr的实现 原子操作原理 什么是原子操作&#xff1f; 原子操作其实就是指在多线程的环境下&#xff0c;确保对共享变量的操作不会被干扰&#xff0c;从而避免了竞态条件。 我们都知道&…

            马克思主义基本原理期末复习下

            二十、资本的原始积累 所谓资本原始积累&#xff0c;就是以暴力手段使生产者与生产资料分离资本快速集中于少数人手中&#xff0c;资本主义得以快速发展的历史过程。具体过程其一&#xff0c;用暴力手段夺取农民的土地&#xff0c;如英国圈地运动在国外建立殖民地&#xff0c;…

            体育数据api接口,足球api篮球api电竞api,比赛赛事数据api

            在体育行业&#xff0c;数据驱动一切&#xff0c;从内容分发到竞猜预测&#xff0c;从用户互动到商业变现&#xff0c;背后少不了一个关键词&#xff1a;数据接口&#xff08;API&#xff09;。无论是实时比分、比赛事件、历史统计&#xff0c;还是球员详情、战绩排名&#xff…

            Harmony 状态监听 @Monitor和@Computed

            Monitor与Computed装饰器在ArkUI状态管理中的协同应用 一、装饰器概述 1. Monitor装饰器 Monitor是ArkUI状态管理V2中的核心装饰器&#xff0c;用于深度监听状态变量的修改&#xff1a; 支持监听嵌套类属性、多维数组项和对象数组中的指定项变化能够获取变化前后的值进行比…

            同济大学多模态感知具身导航全面综述

            作者&#xff1a; I-Tak Ieong, Hao Tang 单位&#xff1a;同济大学计算机学院&#xff0c;北京大学计算机学院 论文标题&#xff1a; Multimodal Perception for Goal-oriented Navigation: A Survey 论文链接&#xff1a;https://arxiv.org/pdf/2504.15643 主要贡献 基于…

            2025年CCF先进音频技术竞赛

            由中国计算机学会主办、CCF语音对话与听觉专委会承办、语音之家协办、华为终端有限公司赞助的CCF先进音频技术大赛正式启动。大赛旨在推动国内高等院校及科研院所在音频技术领域的专业人才培养&#xff0c;支持学生科技创新&#xff0c;选拔优秀人才。 赛事官网&#xff1a;ht…

            手撕线程池

            线程池的目的&#xff1a; 1.复用线程&#xff0c;减少频繁创建和销毁的开销 创建和销毁线程是昂贵的系统操作&#xff0c;涉及内核调度、内存分配&#xff1b; 使用线程池预先创建一批线程&#xff0c;在多个任务间循环复用&#xff0c;避免资源浪费&#xff0c;提高性能。 …

            3DTiles三维模型

            1. 3DTiles 介绍​ 2016 年&#xff0c;Cesium 团队借鉴传统 2DGIS 的地图规范&#xff1a;WMTS&#xff0c;借鉴图形学中的层次细节模型&#xff0c;打造出大规模的三维数据标准&#xff1a;3d-Tiles&#xff0c;中文译名&#xff1a;三维瓦片。 它在模型上利用了 gltf 渲染…

            Golang Kratos 系列:业务分层的若干思考(一)

            在使用 Kratos 框架开发云服务的过程中&#xff0c;渐渐理解和感受到“领域层”这个概念和抽象的强大之处&#xff0c;它可以将业务和存储细节解耦、将业务和开发初期频繁变更的API结构&#xff0c;让Mock单元测试变得更加容易、对细节的变化更鲁棒。让业务代码摆脱技术细节依赖…

            深度优化OSS上传性能:多线程分片上传 vs 断点续传实战对比

            1 卸载开头 对象存储服务&#xff08;OSS&#xff09;已成为现代应用架构的核心组件&#xff0c;但随着业务规模扩大&#xff0c;文件上传性能问题日益凸显。本文将深入探讨两种核心优化技术&#xff1a;多线程分片上传和断点续传&#xff0c;通过理论分析、代码实现和性能测试…

            doris_工作使用整理

            文章目录 前言一、doris整体情况二、doris的存储过程情况1.分类2. 同步物化视图3. 异步物化视图三,分区相关1.分区建的过多前言 提示:doris使用版本3.x 提示:以下是本篇文章正文内容,下面案例可供参考 一、doris整体情况 细节放大 二、doris的存储过程情况 1.分类 按…

            左神算法之单辅助栈排序算法

            目录 1. 题目2. 解释3. 思路4. 代码5. 总结 1. 题目 请编写一个程序&#xff0c;对一个栈里的整型数据&#xff0c;按升序进行排序&#xff08;即排序前栈里的数据是无序的&#xff0c;排序后最大元素位于栈顶&#xff09;。要求最多只能使用一个额外的栈存放临时数据&#xf…

            使用Trae编辑器与MCP协议构建高德地图定制化服务

            目录 一、使用Trae编辑器配置高德MCP Server 1.1 Trae介绍 1.2 从mcp.so中获取配置高德地图mcp server配置信息 1.3 高德地图开发者配置 1.4 添加Filesystem 到Trae 1.5 使用结果展示 1.6 MCP常见命令行工具和包管理说明 1.7 Function Call工具和MCP技术对比 二、本地…

            【LLaMA-Factory 实战系列】三、命令行篇 - YAML 配置与高效微调 Qwen2.5-VL

            【LLaMA-Factory 实战系列】三、命令行篇 - YAML 配置与高效微调 Qwen2.5-VL 1. 引言2. 为什么从 WebUI 转向命令行&#xff1f;3. 准备工作&#xff08;回顾&#xff09;4. 核心&#xff1a;创建并理解训练配置文件4.1 选择并复制基础模板4.2 逐一解析与修改配置文件4.3 参数详…

            推荐:ToB销售B2B销售大客户营销大客户销售培训师培训讲师唐兴通讲销售技巧数字化销售销AI销售如何有效获取客户与业绩

            站在AI浪潮之巅&#xff0c;重塑销售之魂 在AI时代&#xff0c;普通销售人员&#xff08;TOB、TOC&#xff09;除了传统的销售动作之外&#xff0c;还能做什么&#xff1f;怎么做&#xff1f; 这是《AI销冠》这本书想探讨的核心问题。 特别喜欢编辑老师总结的&#xff1a; 读者…

            爬取小红书相关数据导入到excel

            本期我们来进行实战,爬取小红书的相关数据导入到excel中,后续可进行些数据分析,今后或者已经在运营小红书的小伙伴应该比较喜欢这些数据。今天我们的主角是DrissionPage,相对于之前介绍的selenium省去了很多的配置,直接安装了就能使用。 DrissionPage 是一个基于 python …

            c++面试题每日一学记录- C++对象模型与内存对齐深度原理详解

            一、C++对象模型核心原理 1. 对象内存布局基础原理 设计哲学: 零开销原则:不为未使用的特性付出代价(如无虚函数则无vptr)兼容性:C结构体在C++中保持相同内存布局多态支持:通过虚函数表实现运行时动态绑定内存布局实现机制: 编译器处理步骤: 成员排列:严格按声明顺序…

            Kafka 监控与调优实战指南(二)

            五、Kafka 性能问题剖析 5.1 消息丢失 消息丢失是 Kafka 使用过程中较为严重的问题&#xff0c;可能由多种原因导致。在生产者端&#xff0c;如果配置不当&#xff0c;比如将acks参数设置为0&#xff0c;生产者发送消息后不会等待 Kafka broker 的确认&#xff0c;就继续发送…