配置参数

为服务端指定配置文件

TDengine 系统后台服务由 taosd 提供,可以在配置文件 taos.cfg 里修改配置参数,以满足不同场景的需求。配置文件的缺省位置在/etc/taos 目录,可以通过 taosd 命令行执行参数 -c 指定配置文件目录。比如,指定配置文件位于/home/user 这个目录:

  1. taosd -c /home/user

另外可以使用 -C 显示当前服务器配置参数:

  1. taosd -C

为客户端指定配置文件

TDengine 系统的前台交互客户端应用程序为 taos,以及应用驱动,它可以与 taosd 共享同一个配置文件 taos.cfg,也可以使用单独指定配置文件。运行 taos 时,使用参数-c 指定配置文件目录,如 taos -c /home/cfg,表示使用/home/cfg/目录下的 taos.cfg 配置文件中的参数,缺省目录是/etc/taos。更多 taos 的使用方法请见帮助信息 taos --help

  1. taos -C
  1. taos --dump-config

配置参数详细列表

配置参数 - 图1note

本节内容覆盖产品的配置参数,适用于服务端的参数按其对产品行为的影响进行分类,这其中有部分参数也同时适用于客户端;但有少量参数仅适用于客户端,这部分参数进行了单独归类。

配置参数 - 图2note

配置文件参数修改后,需要重启taosd服务,或客户端应用才能生效。

连接相关

firstEp

属性说明
适用范围服务端和客户端均适用
含义taosd 或者 taos 启动时,主动连接的集群中首个 dnode 的 endpoint
缺省值localhost:6030

secondEp

属性说明
适用范围服务端和客户端均适用
含义taosd 或者 taos 启动时,如果 firstEp 连接不上,尝试连接集群中第二个 dnode 的 endpoint
缺省值

fqdn

属性说明
适用范围仅服务端适用
含义数据节点的 FQDN。如果习惯 IP 地址访问,可设置为该节点的 IP 地址。
缺省值缺省为操作系统配置的第一个 hostname。
补充说明这个参数值的长度需要控制在 96 个字符以内。

serverPort

属性说明
适用范围仅服务端适用
含义taosd 启动后,对外服务的端口号
缺省值6030
配置参数 - 图3note

确保集群中所有主机在端口 6030 上的 TCP 协议能够互通。(详细的端口情况请参见下表)

协议默认端口用途说明修改方法
TCP6030客户端与服务端之间通讯,多节点集群的节点间通讯。由配置文件设置 serverPort 决定。
TCP6041客户端与服务端之间的 RESTful 通讯。随 serverPort 端口变化。注意 taosAdapter 配置或有不同,请参考相应文档
TCP6043taosKeeper 监控服务端口。随 taosKeeper 启动参数设置变化。
TCP6044支持 StatsD 的数据接入端口。随 taosAdapter 启动参数设置变化
UDP6045支持 collectd 数据接入端口。随 taosAdapter 启动参数设置变化
TCP6060企业版内 Monitor 服务的网络端口。

maxShellConns

属性说明
适用范围仅服务端适用
含义一个 dnode 容许的连接数
取值范围10-50000000
缺省值5000

监控相关

monitor

属性说明
适用范围仅服务端适用
含义服务器内部的系统监控开关。监控主要负责收集物理节点的负载状况,包括 CPU、内存、硬盘、网络带宽的监控记录,监控信息将通过 HTTP 协议发送给由 monitorFqdnmonitorProt 指定的 taosKeeper 监控服务
取值范围0:关闭监控服务, 1:激活监控服务。
缺省值0

monitorFqdn

属性说明
适用范围仅服务端适用
含义taosKeeper 监控服务的 FQDN
缺省值

monitorPort

属性说明
适用范围仅服务端适用
含义taosKeeper 监控服务的端口号
缺省值6043

monitorInterval

属性说明
适用范围仅服务端适用
含义监控数据库记录系统参数(CPU/内存)的时间间隔
单位
取值范围1-200000
缺省值30

telemetryReporting

属性说明
适用范围仅服务端适用
含义是否上传 telemetry
取值范围0,1 0: 不上传;1:上传
缺省值1

crashReporting

属性说明
适用范围仅服务端适用
含义是否上传 crash 信息
取值范围0,1 0: 不上传;1:上传
缺省值1

查询相关

queryPolicy

属性说明
适用范围仅客户端适用
含义查询语句的执行策略
单位
缺省值1
补充说明1: 只使用 vnode,不使用 qnode; 2: 没有扫描算子的子任务在 qnode 执行,带扫描算子的子任务在 vnode 执行; 3: vnode 只运行扫描算子,其余算子均在 qnode 执行

querySmaOptimize

属性说明
适用范围仅客户端适用
含义sma index 的优化策略
单位
缺省值0
补充说明0: 表示不使用 sma index,永远从原始数据进行查询; 1: 表示使用 sma index,对符合的语句,直接从预计算的结果进行查询

maxNumOfDistinctRes

属性说明
适用范围仅服务端适用
含义允许返回的 distinct 结果最大行数
取值范围默认值为 10 万,最大值 1 亿
缺省值10 万

keepColumnName

属性说明
适用范围仅客户端适用
含义Last、First、LastRow 函数查询时,返回的列名是否包含函数名。
取值范围0 表示包含函数名,1 表示不包含函数名。
缺省值0

countAlwaysReturnValue

属性说明
适用范围仅服务端适用
含义count/hyperloglog函数在输入数据为空或者NULL的情况下是否返回值
取值范围0:返回空行,1:返回 0
缺省值1
补充说明该参数设置为 1 时,如果查询中含有 GROUP BY,PARTITION BY 以及 INTERVAL 子句且相应的组或窗口内数据为空或者NULL, 对应的组或窗口将不返回查询结果

区域相关

timezone

属性说明
适用范围服务端和客户端均适用
含义时区
缺省值从系统中动态获取当前的时区设置
配置参数 - 图4info

为应对多时区的数据写入和查询问题,TDengine 采用 Unix 时间戳(Unix Timestamp)来记录和存储时间戳。Unix 时间戳的特点决定了任一时刻不论在任何时区,产生的时间戳均一致。需要注意的是,Unix 时间戳是在客户端完成转换和记录。为了确保客户端其他形式的时间转换为正确的 Unix 时间戳,需要设置正确的时区。

在 Linux/macOS 中,客户端会自动读取系统设置的时区信息。用户也可以采用多种方式在配置文件设置时区。例如:

  1. timezone UTC-8
  2. timezone GMT-8
  3. timezone Asia/Shanghai

均是合法的设置东八区时区的格式。但需注意,Windows 下并不支持 timezone Asia/Shanghai 这样的写法,而必须写成 timezone UTC-8

时区的设置对于查询和写入 SQL 语句中非 Unix 时间戳的内容(时间戳字符串、关键词 now 的解析)产生影响。例如:

  1. SELECT count(*) FROM table_name WHERE TS<'2019-04-11 12:01:08';

在东八区,SQL 语句等效于

  1. SELECT count(*) FROM table_name WHERE TS<1554955268000;

在 UTC 时区,SQL 语句等效于

  1. SELECT count(*) FROM table_name WHERE TS<1554984068000;

为了避免使用字符串时间格式带来的不确定性,也可以直接使用 Unix 时间戳。此外,还可以在 SQL 语句中使用带有时区的时间戳字符串,例如:RFC3339 格式的时间戳字符串,2013-04-12T15:52:01.123+08:00 或者 ISO-8601 格式时间戳字符串 2013-04-12T15:52:01.123+0800。上述两个字符串转化为 Unix 时间戳不受系统所在时区的影响。

locale

属性说明
适用范围服务端和客户端均适用
含义系统区位信息及编码格式
缺省值系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过 API 设置
配置参数 - 图5info

TDengine 为存储中文、日文、韩文等非 ASCII 编码的宽字符,提供一种专门的字段类型 nchar。写入 nchar 字段的数据将统一采用 UCS4-LE 格式进行编码并发送到服务器。需要注意的是,编码正确性是客户端来保证。因此,如果用户想要正常使用 nchar 字段来存储诸如中文、日文、韩文等非 ASCII 字符,需要正确设置客户端的编码格式。

客户端的输入的字符均采用操作系统当前默认的编码格式,在 Linux/macOS 系统上多为 UTF-8,部分中文系统编码则可能是 GB18030 或 GBK 等。在 docker 环境中默认的编码是 POSIX。在中文版 Windows 系统中,编码则是 CP936。客户端需要确保正确设置自己所使用的字符集,即客户端运行的操作系统当前编码字符集,才能保证 nchar 中的数据正确转换为 UCS4-LE 编码格式。

在 Linux/macOS 中 locale 的命名规则为: <语言>_<地区>.<字符集编码> 如:zh_CN.UTF-8,zh 代表中文,CN 代表大陆地区,UTF-8 表示字符集。字符集编码为客户端正确解析本地字符串提供编码转换的说明。Linux/macOS 可以通过设置 locale 来确定系统的字符编码,由于 Windows 使用的 locale 中不是 POSIX 标准的 locale 格式,因此在 Windows 下需要采用另一个配置参数 charset 来指定字符编码。在 Linux/macOS 中也可以使用 charset 来指定字符编码。

charset

属性说明
适用范围服务端和客户端均适用
含义字符集编码
缺省值系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过 API 设置
配置参数 - 图6info

如果配置文件中不设置 charset,在 Linux/macOS 中,taos 在启动时候,自动读取系统当前的 locale 信息,并从 locale 信息中解析提取 charset 编码格式。如果自动读取 locale 信息失败,则尝试读取 charset 配置,如果读取 charset 配置也失败,则中断启动过程。

在 Linux/macOS 中,locale 信息包含了字符编码信息,因此正确设置了 Linux/macOS 的 locale 以后可以不用再单独设置 charset。例如:

  1. locale zh_CN.UTF-8

在 Windows 系统中,无法从 locale 获取系统当前编码。如果无法从配置文件中读取字符串编码信息,taos 默认设置为字符编码为 CP936。其等效在配置文件中添加如下配置:

  1. charset CP936

如果需要调整字符编码,请查阅当前操作系统使用的编码,并在配置文件中正确设置。

在 Linux/macOS 中,如果用户同时设置了 locale 和字符集编码 charset,并且 locale 和 charset 的不一致,后设置的值将覆盖前面设置的值。

  1. locale zh_CN.UTF-8
  2. charset GBK

则 charset 的有效值是 GBK。

  1. charset GBK
  2. locale zh_CN.UTF-8

charset 的有效值是 UTF-8。

存储相关

dataDir

属性说明
适用范围仅服务端适用
含义数据文件目录,所有的数据文件都将写入该目录
缺省值/var/lib/taos
补充说明多级存储 功能需要与 KEEP 参数配合使用

tempDir

属性说明
适用范围仅服务端适用
含义该参数指定所有系统运行过程中的临时文件生成的目录
缺省值/tmp

minimalTmpDirGB

属性说明
适用范围服务端和客户端均适用
含义tempDir 所指定的临时文件目录所需要保留的最小空间
单位GB
缺省值1.0

minimalDataDirGB

属性说明
适用范围仅服务端适用
含义dataDir 指定的时序数据存储目录所需要保留的最小
单位GB
缺省值2.0

集群相关

supportVnodes

属性说明
适用范围仅服务端适用
含义dnode 支持的最大 vnode 数目
取值范围0-4096
缺省值CPU 核数的 2 倍

性能调优

numOfCommitThreads

属性说明
适用范围仅服务端适用
含义设置写入线程的最大数量
缺省值

日志相关

logDir

属性说明
适用范围服务端和客户端均适用
含义日志文件目录,客户端和服务器的运行日志将写入该目录
缺省值/var/log/taos

minimalLogDirGB

属性说明
适用范围服务端和客户端均适用
含义当日志文件夹所在磁盘可用空间大小小于该值时,停止写日志
单位GB
缺省值1.0

numOfLogLines

属性说明
适用范围服务端和客户端均适用
含义单个日志文件允许的最大行数。
缺省值10,000,000

asyncLog

属性说明
适用范围服务端和客户端均适用
含义日志写入模式
取值范围0:同步、1:异步
缺省值1

logKeepDays

属性说明
适用范围服务端和客户端均适用
含义日志文件的最长保存时间
单位
缺省值0
补充说明大于 0 时,日志文件会被重命名为 taosdlog.xxx,其中 xxx 为日志文件最后修改的时间戳。

debugFlag

属性说明
适用范围服务端和客户端均适用
含义运行日志开关
取值范围131(输出错误和警告日志),135(输出错误、警告和调试日志),143(输出错误、警告、调试和跟踪日志)
缺省值131 或 135(不同模块有不同的默认值)

tmrDebugFlag

属性说明
适用范围服务端和客户端均适用
含义定时器模块的日志开关
取值范围同上
缺省值

uDebugFlag

属性说明
适用范围服务端和客户端均适用
含义共用功能模块的日志开关
取值范围同上
缺省值

rpcDebugFlag

属性说明
适用范围服务端和客户端均适用
含义rpc 模块的日志开关
取值范围同上
缺省值

jniDebugFlag

属性说明
适用范围仅客户端适用
含义jni 模块的日志开关
取值范围同上
缺省值

qDebugFlag

属性说明
适用范围服务端和客户端均适用
含义query 模块的日志开关
取值范围同上
缺省值

cDebugFlag

属性说明
适用范围仅客户端适用
含义client 模块的日志开关
取值范围同上
缺省值

dDebugFlag

属性说明
适用范围仅服务端适用
含义dnode 模块的日志开关
取值范围同上
缺省值135

vDebugFlag

属性说明
适用范围仅服务端适用
含义vnode 模块的日志开关
取值范围同上
缺省值

mDebugFlag

属性说明
适用范围仅服务端适用
含义mnode 模块的日志开关
取值范围同上
缺省值135

wDebugFlag

属性说明
适用范围仅服务端适用
含义wal 模块的日志开关
取值范围同上
缺省值135

sDebugFlag

属性说明
适用范围服务端和客户端均适用
含义sync 模块的日志开关
取值范围同上
缺省值135

tsdbDebugFlag

属性说明
适用范围仅服务端适用
含义tsdb 模块的日志开关
取值范围同上
缺省值

tqDebugFlag

属性说明
适用范围仅服务端适用
含义tq 模块的日志开关
取值范围同上
缺省值

fsDebugFlag

属性说明
适用范围仅服务端适用
含义fs 模块的日志开关
取值范围同上
缺省值

udfDebugFlag

属性说明
适用范围仅服务端适用
含义UDF 模块的日志开关
取值范围同上
缺省值

smaDebugFlag

属性说明
适用范围仅服务端适用
含义sma 模块的日志开关
取值范围同上
缺省值

idxDebugFlag

属性说明
适用范围仅服务端适用
含义index 模块的日志开关
取值范围同上
缺省值

tdbDebugFlag

属性说明
适用范围仅服务端适用
含义tdb 模块的日志开关
取值范围同上
缺省值

Schemaless 相关

smlChildTableName

属性说明
适用范围仅客户端适用
含义schemaless 自定义的子表名的 key
类型字符串
缺省值

smlTagName

属性说明
适用范围仅客户端适用
含义schemaless tag 为空时默认的 tag 名字
类型字符串
缺省值_tag_null

smlDataFormat

属性说明
适用范围仅客户端适用
含义schemaless 列数据是否顺序一致,从3.0.3.0开始,该配置废弃
值域0:不一致;1: 一致
缺省值0

其他

enableCoreFile

属性说明
适用范围服务端和客户端均适用
含义是否开启服务 crash 时生成 core 文件
取值范围0:否,1:是
缺省值1
补充说明不同的启动方式,生成 core 文件的目录如下:1、systemctl start taosd 启动:生成的 core 在根目录下
2、手动启动,就在 taosd 执行目录下。

udf

属性说明
适用范围仅服务端适用
含义是否启动 udf 服务
取值范围0: 不启动;1:启动
缺省值1

压缩参数

compressMsgSize

属性说明
适用于服务端和客户端均适用
含义是否对 RPC 消息进行压缩
取值范围-1: 所有消息都不压缩; 0: 所有消息都压缩; N (N>0): 只有大于 N 个字节的消息才压缩
缺省值-1

3.0 中有效的配置参数列表

#参数适用于 2.X适用于 3.03.0 版本的当前行为
1firstEp
2secondEp
3fqdn
4serverPort
5maxShellConns
6monitor
7monitorFqdn
8monitorPort
9monitorInterval
10queryPolicy
11querySmaOptimize
12maxNumOfDistinctRes
15countAlwaysReturnValue
16dataDir
17minimalDataDirGB
18supportVnodes
19tempDir
20minimalTmpDirGB
21smlChildTableName
22smlTagName
23smlDataFormat是(从3.0.3.0开始,该配置废弃)
24statusInterval
25logDir
26minimalLogDirGB
27numOfLogLines
28asyncLog
29logKeepDays
30debugFlag
31tmrDebugFlag
32uDebugFlag
33rpcDebugFlag
34jniDebugFlag
35qDebugFlag
36cDebugFlag
37dDebugFlag
38vDebugFlag
39mDebugFlag
40wDebugFlag
41sDebugFlag
42tsdbDebugFlag
43tqDebugFlag
44fsDebugFlag
45udfDebugFlag
46smaDebugFlag
47idxDebugFlag
48tdbDebugFlag
49metaDebugFlag
50timezone
51locale
52charset
53udf
54enableCoreFile

2.x->3.0 的废弃参数

#参数适用于 2.X适用于 3.03.0 版本的当前行为
1arbitrator通过 RAFT 协议选主
2numOfThreadsPerCore有其它参数设置多种线程池的大小
3numOfMnodes通过 create mnode 命令动态创建 mnode
4vnodeBak3.0 行为未知
5balance负载均衡功能由 split/merge vgroups 实现 (暂不支持)
6balanceInterval随着 balance 参数失效
7offlineThreshold3.0 行为未知
8role由 supportVnode 决定是否能够创建
9dnodeNopLoop2.6 文档中未找到此参数
10keepTimeOffset2.6 文档中未找到此参数
11rpcTimer3.0 行为未知
12rpcMaxTime3.0 行为未知
13rpcForceTcp默认为 TCP
14tcpConnTimeout3.0 行为未知
15syncCheckInterval3.0 行为未知
16maxTmrCtrl3.0 行为未知
17monitorReplica由 RAFT 协议管理多副本
18smlTagNullName3.0 行为未知
19keepColumnName3.0 行为未知
20ratioOfQueryCores由 线程池 相关配置参数决定
21maxStreamCompDelay3.0 行为未知
22maxFirstStreamCompDelay3.0 行为未知
23retryStreamCompDelay3.0 行为未知
24streamCompDelayRatio3.0 行为未知
25maxVgroupsPerDb由 create db 的参数 vgroups 指定实际 vgroups 数量
26maxTablesPerVnodeDB 中的所有表近似平均分配到各个 vgroup
27minTablesPerVnodeDB 中的所有表近似平均分配到各个 vgroup
28tableIncStepPerVnodeDB 中的所有表近似平均分配到各个 vgroup
29cache由 buffer 代替 cacheblocks
30blocks由 buffer 代替 cacheblocks
31days由 create db 的参数 duration 取代
32keep由 create db 的参数 keep 取代
33minRows由 create db 的参数 minRows 取代
34maxRows由 create db 的参数 maxRows 取代
35quorum由 RAFT 协议决定
36comp由 create db 的参数 comp 取代
37walLevel由 create db 的参数 wal_level 取代
38fsync由 create db 的参数 wal_fsync_period 取代
39replica由 create db 的参数 replica 取代
40partitions3.0 行为未知
41update允许更新部分列
42cachelast由 create db 的参数 cacheModel 取代
43maxSQLLengthSQL 上限为 1MB,无需参数控制
44maxWildCardsLength3.0 行为未知
45maxRegexStringLen3.0 行为未知
46maxNumOfOrderedRes3.0 行为未知
47maxConnections取决于系统配置和系统处理能力,详见后面的 Note
48mnodeEqualVnodeNum3.0 行为未知
49httphttp 服务由 taosAdapter 提供
50httpEnableRecordSqltaosd 不提供 http 服务
51httpMaxThreadstaosd 不提供 http 服务
52restfulRowLimittaosd 不提供 http 服务
53httpDbNameMandatorytaosd 不提供 http 服务
54httpKeepAlivetaosd 不提供 http 服务
55enableRecordSql3.0 行为未知
56maxBinaryDisplayWidth3.0 行为未知
57stream默认启用连续查询
58retrieveBlockingModel3.0 行为未知
59tsdbMetaCompactRatio3.0 行为未知
60defaultJSONStrType3.0 行为未知
61walFlushSize3.0 行为未知
62keepTimeOffset3.0 行为未知
63flowctrl3.0 行为未知
64slaveQuery3.0 行为未知: slave vnode 是否能够处理查询?
65adjustMaster3.0 行为未知
66topicBinaryLen3.0 行为未知
67telegrafUseFieldNum3.0 行为未知
68deadLockKillQuery3.0 行为未知
69clientMerge3.0 行为未知
70sdbDebugFlag参考 3.0 的 DebugFlag 系列参数
71odbcDebugFlag参考 3.0 的 DebugFlag 系列参数
72httpDebugFlag参考 3.0 的 DebugFlag 系列参数
73monDebugFlag参考 3.0 的 DebugFlag 系列参数
74cqDebugFlag参考 3.0 的 DebugFlag 系列参数
75shortcutFlag参考 3.0 的 DebugFlag 系列参数
76probeSeconds3.0 行为未知
77probeKillSeconds3.0 行为未知
78probeInterval3.0 行为未知
79lossyColumns3.0 行为未知
80fPrecision3.0 行为未知
81dPrecision3.0 行为未知
82maxRange3.0 行为未知
83range3.0 行为未知