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.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;就繼續發送…