当前位置: 首页 > news >正文

TDengine 技术参数配置大全

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.lqws.cn/news/506719.html

            相关文章:

          2. Docker 报错“x509: certificate signed by unknown authority”的排查与解决实录
          3. 什么是 OA 系统?OA 系统要具备什么样的功能?
          4. jsoncpp-src-0.5.0编译
          5. Python Bug 修复案例分析:编码问题导致程序出现bug 两种修复方法
          6. Redis哈希表Rehash全解析:扩容缩容背后的渐进式智慧
          7. SpringBoot 自动化部署实战:CI/CD 整合方案与避坑全指南
          8. 相较于传统购物,AR 购物在便利性方面体现在哪些维度?​
          9. IDC报告AR/VR市场反弹Meta份额超半,谷歌/微美全息精准卡位AR/AI眼镜市场机遇
          10. 快速搭建系统原型,UI界面,有哪些高效的AI工具和方法
          11. 数智助农 金融兴乡:中和农信双轮驱动农业现代化实践
          12. 重医等利用纯生信在iMeta(中科院1区|IF33.2)发表:多组学联合分析西部五省母婴队列数据
          13. 【C/C++】C++ 编程规范:101条规则准则与最佳实践
          14. (LeetCode 面试经典 150 题 )121. 买卖股票的最佳时机 (遍历)
          15. 【Unity】MiniGame编辑器小游戏(四)数独【Sudoku】
          16. 战略调整频繁,如何快速重构项目组合
          17. Kubernetes生命周期管理:深入理解 Pod 生命周期
          18. 【数据结构】_二叉树的遍历与销毁
          19. 交易期权先从买方开始
          20. 【Linux网络与网络编程】15.DNS与ICMP协议
          21. 打包上传到Linux部署并启动
          22. 【JS-4.8-type属性】深入理解DOM操作中的type属性及其常见应用
          23. Python 猜数字小游戏:Tkinter 实现的互动猜数挑战
          24. 国际标准 ISO 8601 详解
          25. SpringBoot + MyBatis 事务管理全解析:从 @Transactional 到 JDBC Connection 的旅程
          26. NVIDIA GPU架构学习笔记
          27. SpringBoot项目快速开发框架JeecgBoot——项目简介及系统架构!
          28. WPF CommunityToolkit.Mvvm 信使 (ObservableRecipient)
          29. EasyExcel单元格内换行,合并单元格
          30. 记录一下小程序城市索引栏开发经历
          31. 鸿蒙开发深入解析:Service Ability(后台任务)全面指南