Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
dda0e6e3
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
dda0e6e3
编写于
8月 11, 2021
作者:
L
liuyq-617
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop' into test/skci_dev
上级
4a210d79
a8506a2d
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
451 addition
and
72 deletion
+451
-72
Jenkinsfile
Jenkinsfile
+10
-10
documentation20/cn/11.administrator/docs.md
documentation20/cn/11.administrator/docs.md
+349
-59
documentation20/cn/12.taos-sql/docs.md
documentation20/cn/12.taos-sql/docs.md
+43
-1
src/rpc/src/rpcMain.c
src/rpc/src/rpcMain.c
+2
-2
tests/pytest/fulltest.sh
tests/pytest/fulltest.sh
+1
-0
tests/pytest/functions/function_interp.py
tests/pytest/functions/function_interp.py
+46
-0
未找到文件。
Jenkinsfile
浏览文件 @
dda0e6e3
...
...
@@ -172,7 +172,7 @@ pipeline {
agent
any
steps
{
pre_test
()
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
sh
'''
date
cd ${WKC}/tests
...
...
@@ -187,7 +187,7 @@ pipeline {
steps
{
pre_test
()
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
sh
'''
date
cd ${WKC}/tests
...
...
@@ -199,7 +199,7 @@ pipeline {
stage
(
'python_3_s6'
)
{
agent
any
steps
{
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
pre_test
()
sh
'''
date
...
...
@@ -212,7 +212,7 @@ pipeline {
stage
(
'test_b1_s2'
)
{
agent
any
steps
{
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
pre_test
()
sh
'''
cd ${WKC}/tests
...
...
@@ -248,7 +248,7 @@ pipeline {
./handle_taosd_val_log.sh
'''
}
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
sh
'''
date
cd ${WKC}/tests
...
...
@@ -271,7 +271,7 @@ pipeline {
./handle_val_log.sh
'''
}
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
sh
'''
date
cd ${WKC}/tests
...
...
@@ -288,7 +288,7 @@ pipeline {
stage
(
'test_b4_s7'
)
{
agent
any
steps
{
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
pre_test
()
sh
'''
date
...
...
@@ -307,7 +307,7 @@ pipeline {
stage
(
'test_b5_s8'
)
{
agent
any
steps
{
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
pre_test
()
sh
'''
date
...
...
@@ -320,7 +320,7 @@ pipeline {
stage
(
'test_b6_s9'
)
{
agent
any
steps
{
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
pre_test
()
sh
'''
date
...
...
@@ -333,7 +333,7 @@ pipeline {
stage
(
'test_b7_s10'
)
{
agent
any
steps
{
timeout
(
time:
4
5
,
unit:
'MINUTES'
){
timeout
(
time:
5
5
,
unit:
'MINUTES'
){
pre_test
()
sh
'''
date
...
...
documentation20/cn/11.administrator/docs.md
浏览文件 @
dda0e6e3
# TDengine的运营与
维护
# TDengine的运营与
运维
## <a class="anchor" id="planning"></a>容量规划
...
...
@@ -28,12 +28,28 @@ taosd 内存总量 = vnode 内存 + mnode 内存 + 查询内存
最后,如果内存充裕,可以考虑加大 Blocks 的配置,这样更多数据将保存在内存里,提高查询速度。
#### 客户端内存需求
客户端应用采用 taosc 客户端驱动连接服务端,会有内存需求的开销。
客户端的内存开销主要由写入过程中的 SQL 语句、表的元数据信息缓存、以及结构性开销构成。系统最大容纳的表数量为 N(每个通过超级表创建的表的 meta data 开销约 256 字节),最大并行写入线程数量 T,最大 SQL 语句长度 S(通常是 1 Mbytes)。由此可以进行客户端内存开销的估算(单位 MBytes):
```
M = (T * S * 3 + (N / 4096) + 100)
```
举例如下:用户最大并发写入线程数 100,子表数总数 10,000,000,那么客户端的内存最低要求是:
```
100 * 3 + (10000000 / 4096) + 100 = 2741 (MBytes)
```
即配置 3 GBytes 内存是最低要求。
### CPU 需求
CPU 的需求取决于如下两方面:
*
__数据插入__
TDengine 单核每秒能至少处理一万个插入请求。每个插入请求可以带多条记录,一次插入一条记录与插入 10 条记录,消耗的计算资源差别很小。因此每次插入,条数越大,插入效率越高。如果一个插入请求带 200 条以上记录,单核就能达到每秒插入 100 万条记录的速度。但对前端数据采集的要求越高,因为需要缓存记录,然后一批插入。
*
__查询需求__
TDengine 提供高效的查询,但是每个场景的查询差异很大,查询频次变化也很大,难以给出客观数字。需要用户针对自己的场景,写一些查询语句,才能确定。
*
**数据插入**
TDengine 单核每秒能至少处理一万个插入请求。每个插入请求可以带多条记录,一次插入一条记录与插入 10 条记录,消耗的计算资源差别很小。因此每次插入,条数越大,插入效率越高。如果一个插入请求带 200 条以上记录,单核就能达到每秒插入 100 万条记录的速度。但对前端数据采集的要求越高,因为需要缓存记录,然后一批插入。
*
**查询需求**
TDengine 提供高效的查询,但是每个场景的查询差异很大,查询频次变化也很大,难以给出客观数字。需要用户针对自己的场景,写一些查询语句,才能确定。
因此仅对数据插入而言,CPU 是可以估算出来的,但查询所耗的计算资源无法估算。在实际运营过程中,不建议 CPU 使用率超过 50%,超过后,需要增加新的节点,以获得更多计算资源。
...
...
@@ -96,51 +112,170 @@ TDengine系统后台服务由taosd提供,可以在配置文件taos.cfg里修
taosd -C
```
下面仅仅列出一些重要的配置参数,更多的参数请看配置文件里的说明。各个参数的详细介绍及作用请看前述章节,而且这些参数的缺省配置都是工作的,一般无需设置。
**注意:配置修改后,需要重启*taosd*服务才能生效。**
-
firstEp: taosd启动时,主动连接的集群中首个dnode的end point, 默认值为localhost:6030。
-
fqdn:数据节点的FQDN,缺省为操作系统配置的第一个hostname。如果习惯IP地址访问,可设置为该节点的IP地址。这个参数值的长度需要控制在 96 个字符以内。
-
serverPort:taosd启动后,对外服务的端口号,默认值为6030。(RESTful服务使用的端口号是在此基础上+11,即默认值为6041。)
-
dataDir: 数据文件目录,所有的数据文件都将写入该目录。默认值:/var/lib/taos。
-
logDir:日志文件目录,客户端和服务器的运行日志文件将写入该目录。默认值:/var/log/taos。
-
arbitrator:系统中裁决器的end point, 缺省值为空。
-
role:dnode的可选角色。0-any; 既可作为mnode,也可分配vnode;1-mgmt;只能作为mnode,不能分配vnode;2-dnode;不能作为mnode,只能分配vnode
-
debugFlag:运行日志开关。131(输出错误和警告日志),135( 输出错误、警告和调试日志),143( 输出错误、警告、调试和跟踪日志)。默认值:131或135(不同模块有不同的默认值)。
-
numOfLogLines:单个日志文件允许的最大行数。默认值:10,000,000行。
-
logKeepDays:日志文件的最长保存时间。大于0时,日志文件会被重命名为taosdlog.xxx,其中xxx为日志文件最后修改的时间戳,单位为秒。默认值:0天。
-
maxSQLLength:单条SQL语句允许最长限制。默认值:65380字节。
-
telemetryReporting: 是否允许 TDengine 采集和上报基本使用信息,0表示不允许,1表示允许。 默认值:1。
-
stream: 是否启用连续查询(流计算功能),0表示不允许,1表示允许。 默认值:1。
-
queryBufferSize: 为所有并发查询占用保留的内存大小。计算规则可以根据实际应用可能的最大并发数和表的数字相乘,再乘 170 。单位为 MB(2.0.15 以前的版本中,此参数的单位是字节)。
-
ratioOfQueryCores: 设置查询线程的最大数量。最小值0 表示只有1个查询线程;最大值2表示最大建立2倍CPU核数的查询线程。默认为1,表示最大和CPU核数相等的查询线程。该值可以为小数,即0.5表示最大建立CPU核数一半的查询线程。
下面仅仅列出一些重要的配置参数,更多的参数请看配置文件里的说明。各个参数的详细介绍及作用请看前述章节,而且这些参数的缺省配置都是可以工作的,一般无需设置。
**注意:配置文件参数修改后,需要重启*taosd*服务,或客户端应用才能生效。**
|
**#**
|
**配置参数名称**
|
**内部**
|
**S\|C**
|
**单位**
|
**含义**
|
**取值范围**
|
**缺省值**
|
**备注**
|
| ----- | ----------------------- | -------- | -------- | -------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 1 | firstEP | |
**SC**
| | taosd启动时,主动连接的集群中首个dnode的end point | | localhost:6030 | |
| 2 | secondEP | YES |
**SC**
| | taosd启动时,如果firstEp连接不上,尝试连接集群中第二个dnode的end point | | 无 | |
| 3 | fqdn | |
**SC**
| | 数据节点的FQDN。如果习惯IP地址访问,可设置为该节点的IP地址。 | | 缺省为操作系统配置的第一个hostname。 | 这个参数值的长度需要控制在 96 个字符以内。 |
| 4 | serverPort | |
**SC**
| | taosd启动后,对外服务的端口号 | | 6030 | RESTful服务使用的端口号是在此基础上+11,即默认值为6041。 |
| 5 | logDir | |
**SC**
| | 日志文件目录,客户端和服务器的运行日志将写入该目录 | | /var/log/taos | |
| 6 | scriptDir | YES |
**S**
| | | | | |
| 7 | dataDir | |
**S**
| | 数据文件目录,所有的数据文件都将写入该目录 | | /var/lib/taos | |
| 8 | arbitrator | |
**S**
| | 系统中裁决器的end point | | 空 | |
| 9 | numOfThreadsPerCore | |
**SC**
| | 每个CPU核生成的队列消费者线程数量 | | 1.0 | |
| 10 | ratioOfQueryThreads | |
**S**
| | 设置查询线程的最大数量 | 0:表示只有1个查询线程;1:表示最大和CPU核数相等的查询线程;2:表示最大建立2倍CPU核数的查询线程。 | 1 | 该值可以为小数,即0.5表示最大建立CPU核数一半的查询线程。 |
| 11 | numOfMnodes | |
**S**
| | 系统中管理节点个数 | | 3 | |
| 12 | vnodeBak | |
**S**
| | 删除vnode时是否备份vnode目录 | 0:否,1:是 | 1 | |
| 13 | telemetryRePorting | |
**S**
| | 是否允许 TDengine 采集和上报基本使用信息 | 0:不允许;1:允许 | 1 | |
| 14 | balance | |
**S**
| | 是否启动负载均衡 | 0,1 | 1 | |
| 15 | balanceInterval | YES |
**S**
| 秒 | 管理节点在正常运行状态下,检查负载均衡的时间间隔 | 1-30000 | 300 | |
| 16 | role | |
**S**
| | dnode的可选角色 | 0:any(既可作为mnode,也可分配vnode);1:mgmt(只能作为mnode,不能分配vnode);2:dnode(不能作为mnode,只能分配vnode) | 0 | |
| 17 | maxTmerCtrl | |
**SC**
| 个 | 定时器个数 | 8-2048 | 512 | |
| 18 | monitorInterval | |
**S**
| 秒 | 监控数据库记录系统参数(CPU/内存)的时间间隔 | 1-600 | 30 | |
| 19 | offlineThreshold | |
**S**
| 秒 | dnode离线阈值,超过该时间将导致dnode离线 | 5-7200000 | 86400
*
10(10天) | |
| 20 | rpcTimer | |
**SC**
| 毫秒 | rpc重试时长 | 100-3000 | 300 | |
| 21 | rpcMaxTime | |
**SC**
| 秒 | rpc等待应答最大时长 | 100-7200 | 600 | |
| 22 | statusInterval | |
**S**
| 秒 | dnode向mnode报告状态间隔 | 1-10 | 1 | |
| 23 | shellActivityTimer | |
**SC**
| 秒 | shell客户端向mnode发送心跳间隔 | 1-120 | 3 | |
| 24 | tableMetaKeepTimer | |
**S**
| 秒 | 表的元数据cache时长 | 1-8640000 | 7200 | |
| 25 | minSlidingTime | |
**S**
| 毫秒 | 最小滑动窗口时长 | 10-1000000 | 10 | 支持us补值后,这个值就是1us了。 |
| 26 | minIntervalTime | |
**S**
| 毫秒 | 时间窗口最小值 | 1-1000000 | 10 | |
| 27 | stream | |
**S**
| | 是否启用连续查询(流计算功能) | 0:不允许;1:允许 | 1 | |
| 28 | maxStreamCompDelay | |
**S**
| 毫秒 | 连续查询启动最大延迟 | 10-1000000000 | 20000 | 为避免多个stream同时执行占用太多系统资源,程序中对stream的执行时间人为增加了一些随机的延时。maxFirstStreamCompDelay 是stream第一次执行前最少要等待的时间。streamCompDelayRatio 是延迟时间的计算系数,它乘以查询的 interval 后为延迟时间基准。maxStreamCompDelay是延迟时间基准的上限。实际延迟时间为一个不超过延迟时间基准的随机值。stream某次计算失败后需要重试,retryStreamCompDelay是重试的等待时间基准。实际重试等待时间为不超过等待时间基准的随机值。 |
| 29 | maxFirstStreamCompDelay | |
**S**
| 毫秒 | 第一次连续查询启动最大延迟 | 10-1000000000 | 10000 | |
| 30 | retryStreamCompDelay | |
**S**
| 毫秒 | 连续查询重试等待间隔 | 10-1000000000 | 10 | |
| 31 | streamCompDelayRatio | |
**S**
| | 连续查询的延迟时间计算系数 | 0.1-0.9 | 0.1 | |
| 32 | maxVgroupsPerDb | |
**S**
| | 每个DB中 能够使用的最大vnode个数 | 0-8192 | | |
| 33 | maxTablesPerVnode | |
**S**
| | 每个vnode中能够创建的最大表个数 | | 1000000 | |
| 34 | minTablesPerVnode | YES |
**S**
| | 每个vnode中必须创建的最小表个数 | | 100 | |
| 35 | tableIncStepPerVnode | YES |
**S**
| | 每个vnode中超过最小表数后递增步长 | | 1000 | |
| 36 | cache | |
**S**
| MB | 内存块的大小 | | 16 | |
| 37 | blocks | |
**S**
| | 每个vnode(tsdb)中有多少cache大小的内存块。因此一个vnode的用的内存大小粗略为(cache
*
blocks) | | 6 | |
| 38 | days | |
**S**
| 天 | 数据文件存储数据的时间跨度 | | 10 | |
| 39 | keep | |
**S**
| 天 | 数据保留的天数 | | 3650 | |
| 40 | minRows | |
**S**
| | 文件块中记录的最小条数 | | 100 | |
| 41 | maxRows | |
**S**
| | 文件块中记录的最大条数 | | 4096 | |
| 42 | quorum | |
**S**
| | 异步写入成功所需应答之法定数 | 1-3 | 1 | |
| 43 | comp | |
**S**
| | 文件压缩标志位 | 0:关闭,1:一阶段压缩,2:两阶段压缩 | 2 | |
| 44 | walLevel | |
**S**
| | WAL级别 | 1:写wal, 但不执行fsync; 2:写wal, 而且执行fsync | 1 | |
| 45 | fsync | |
**S**
| 毫秒 | 当wal设置为2时,执行fsync的周期 | 最小为0,表示每次写入,立即执行fsync;最大为180000(三分钟) | 3000 | |
| 46 | replica | |
**S**
| | 副本个数 | 1-3 | 1 | |
| 47 | mqttHostName | YES |
**S**
| | mqtt uri | | |
[
mqtt://username:password@hostname:1883/taos/
](
mqtt://username:password@hostname:1883/taos/
)
|
| 48 | mqttPort | YES |
**S**
| | mqtt client name | | | 1883 |
| 49 | mqttTopic | YES |
**S**
| | | | | /test |
| 50 | compressMsgSize | |
**S**
| bytes | 客户端与服务器之间进行消息通讯过程中,对通讯的消息进行压缩的阈值。如果要压缩消息,建议设置为64330字节,即大于64330字节的消息体才进行压缩。 |
`0 `
表示对所有的消息均进行压缩 >0: 超过该值的消息才进行压缩 -1: 不压缩 | -1 | |
| 51 | maxSQLLength | |
**C**
| bytes | 单条SQL语句允许的最长限制 | 65480-1048576 | 65380 | |
| 52 | maxNumOfOrderedRes | |
**SC**
| | 支持超级表时间排序允许的最多记录数限制 | | 10万 | |
| 53 | timezone | |
**SC**
| | 时区 | | 从系统中动态获取当前的时区设置 | |
| 54 | locale | |
**SC**
| | 系统区位信息及编码格式 | | 系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过API设置 | |
| 55 | charset | |
**SC**
| | 字符集编码 | | 系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过API设置 | |
| 56 | maxShellConns | |
**S**
| | 一个dnode容许的连接数 | 10-50000000 | 5000 | |
| 57 | maxConnections | |
**S**
| | 一个数据库连接所容许的dnode连接数 | 1-100000 | 5000 | 实际测试下来,如果默认没有配,选 50 个 worker thread 会产生 Network unavailable |
| 58 | minimalLogDirGB | |
**SC**
| GB | 当日志文件夹的磁盘大小小于该值时,停止写日志 | | 0.1 | |
| 59 | minimalTmpDirGB | |
**SC**
| GB | 当日志文件夹的磁盘大小小于该值时,停止写临时文件 | | 0.1 | |
| 60 | minimalDataDirGB | |
**S**
| GB | 当日志文件夹的磁盘大小小于该值时,停止写时序数据 | | 0.1 | |
| 61 | mnodeEqualVnodeNum | |
**S**
| | 一个mnode等同于vnode消耗的个数 | | 4 | |
| 62 | http | |
**S**
| | 服务器内部的http服务开关。 | 0:关闭http服务, 1:激活http服务。 | 1 | |
| 63 | mqtt | YES |
**S**
| | 服务器内部的mqtt服务开关。 | 0:关闭mqtt服务, 1:激活mqtt服务。 | 0 | |
| 64 | monitor | |
**S**
| | 服务器内部的系统监控开关。监控主要负责收集物理节点的负载状况,包括CPU、内存、硬盘、网络带宽、HTTP请求量的监控记录,记录信息存储在
`LOG`
库中。 | 0:关闭监控服务, 1:激活监控服务。 | 0 | |
| 65 | httpEnableRecordSql | |
**S**
| | 内部使用,记录通过RESTFul接口,产生的SQL调用 | | 0 | 生成的文件(httpnote.0/httpnote.1),与服务端日志所在目录相同。 |
| 66 | httpMaxThreads | |
**S**
| | RESTFul接口的线程数 | | 2 | |
| 67 | telegrafUseFieldNum | YES | | | | | | |
| 68 | restfulRowLimit | |
**S**
| | RESTFul接口单次返回的记录条数 | | 10240 | 最大10,000,000 |
| 69 | numOfLogLines | |
**SC**
| | 单个日志文件允许的最大行数。 | | 10,000,000 | |
| 70 | asyncLog | |
**SC**
| | 日志写入模式 | 0:同步、1:异步 | 1 | |
| 71 | logKeepDays | |
**SC**
| 天 | 日志文件的最长保存时间 | | 0 | 大于0时,日志文件会被重命名为taosdlog.xxx,其中xxx为日志文件最后修改的时间戳。 |
| 72 | debugFlag | |
**SC**
| | 运行日志开关 | 131(输出错误和警告日志),135(输出错误、警告和调试日志),143(输出错误、警告、调试和跟踪日志) | 131或135(不同模块有不同的默认值) | |
| 73 | mDebugFlag | |
**S**
| | 管理模块的日志开关 | 同上 | 135 | |
| 74 | dDebugFlag | |
**SC**
| | dnode模块的日志开关 | 同上 | 135 | |
| 75 | sDebugFlag | |
**SC**
| | sync模块的日志开关 | 同上 | 135 | |
| 76 | wDebugFlag | |
**SC**
| | wal模块的日志开关 | 同上 | 135 | |
| 77 | sdbDebugFlag | |
**SC**
| | sdb模块的日志开关 | 同上 | 135 | |
| 78 | rpcDebugFlag | |
**SC**
| | rpc模块的日志开关 | 同上 | | |
| 79 | tmrDebugFlag | |
**SC**
| | 定时器模块的日志开关 | 同上 | | |
| 80 | cDebugFlag | |
**C**
| | client模块的日志开关 | 同上 | | |
| 81 | jniDebugFlag | |
**C**
| | jni模块的日志开关 | 同上 | | |
| 82 | odbcDebugFlag | |
**C**
| | odbc模块的日志开关 | 同上 | | |
| 83 | uDebugFlag | |
**SC**
| | 共用功能模块的日志开关 | 同上 | | |
| 84 | httpDebugFlag | |
**S**
| | http模块的日志开关 | 同上 | | |
| 85 | mqttDebugFlag | |
**S**
| | mqtt模块的日志开关 | 同上 | | |
| 86 | monitorDebugFlag | |
**S**
| | 监控模块的日志开关 | 同上 | | |
| 87 | qDebugFlag | |
**SC**
| | 查询模块的日志开关 | 同上 | | |
| 88 | vDebugFlag | |
**SC**
| | vnode模块的日志开关 | 同上 | | |
| 89 | tsdbDebugFlag | |
**S**
| | TSDB模块的日志开关 | 同上 | | |
| 90 | cqDebugFlag | |
**SC**
| | 连续查询模块的日志开关 | 同上 | | |
| 91 | tscEnableRecordSql | |
**C**
| | 是否记录客户端sql语句到文件 | 0:否,1:是 | 0 | 生成的文件(tscnote-xxxx.0/tscnote-xxx.1,xxxx是pid),与客户端日志所在目录相同。 |
| 92 | enableCoreFile | |
**SC**
| | 是否开启服务crash时生成core文件 | 0:否,1:是 | 1 | 不同的启动方式,生成core文件的目录如下:1、systemctl start taosd启动:生成的core在根目录下;2、手动启动,就在taosd执行目录下。 |
| 93 | gitinfo | YES |
**SC**
| | | 1 | | |
| 94 | gitinfoofInternal | YES |
**SC**
| | | 2 | | |
| 95 | Buildinfo | YES |
**SC**
| | | 3 | | |
| 96 | version | YES |
**SC**
| | | 4 | | |
| 97 | | | | | | | | |
| 98 | maxBinaryDisplayWidth | |
**C**
| | Taos shell中binary 和 nchar字段的显示宽度上限,超过此限制的部分将被隐藏 | 5 - | 30 | 实际上限按以下规则计算:如果字段值的长度大于 maxBinaryDisplayWidth,则显示上限为
**字段名长度**
和
**maxBinaryDisplayWidth**
的较大者。否则,上限为
**字段名长度**
和
**字段值长度**
的较大者。可在 shell 中通过命令 set max_binary_display_width nn动态修改此选项 |
| 99 | queryBufferSize | |
**S**
| MB | 为所有并发查询占用保留的内存大小。 | | | 计算规则可以根据实际应用可能的最大并发数和表的数字相乘,再乘 170 。(2.0.15 以前的版本中,此参数的单位是字节) |
| 100 | ratioOfQueryCores | |
**S**
| | 设置查询线程的最大数量。 | | | 最小值0 表示只有1个查询线程;最大值2表示最大建立2倍CPU核数的查询线程。默认为1,表示最大和CPU核数相等的查询线程。该值可以为小数,即0.5表示最大建立CPU核数一半的查询线程。 |
| 101 | update | |
**S**
| | 允许更新已存在的数据行 | 0
\|
1 | 0 | 从 2.0.8.0 版本开始 |
| 102 | cacheLast | |
**S**
| | 是否在内存中缓存子表的最近数据 | 0:关闭;1:缓存子表最近一行数据;2:缓存子表每一列的最近的非NULL值;3:同时打开缓存最近行和列功能。 | 0 | 2.1.2.0 版本之前、2.0.20.7 版本之前在 taos.cfg 文件中不支持此参数。 |
| 103 | numOfCommitThreads | YES |
**S**
| | 设置写入线程的最大数量 | | | |
| 104 | maxWildCardsLength | |
**C**
| bytes | 设定 LIKE 算子的通配符字符串允许的最大长度 | 0-16384 | 100 | 2.1.6.1 版本新增。 |
**注意:**
对于端口,TDengine会使用从serverPort起13个连续的TCP和UDP端口号,请务必在防火墙打开。因此如果是缺省配置,需要打开从6030到6042共13个端口,而且必须TCP和UDP都打开。(详细的端口情况请参见
[
TDengine 2.0 端口说明
](
https://www.taosdata.com/cn/documentation/faq#port
)
)
不同应用场景的数据往往具有不同的数据特征,比如保留天数、副本数、采集频次、记录大小、采集点的数量、压缩等都可完全不同。为获得在存储上的最高效率,TDengine提供如下存储相关的系统配置参数(既可以作为 create database 指令的参数,也可以写在 taos.cfg 配置文件中用来设定创建新数据库时所采用的默认值):
-
days:一个数据文件存储数据的时间跨度。单位为天,默认值:10。
-
keep:数据库中数据保留的天数。单位为天,默认值:3650。(可通过 alter database 修改)
-
minRows:文件块中记录的最小条数。单位为条,默认值:100。
-
maxRows:文件块中记录的最大条数。单位为条,默认值:4096。
-
comp:文件压缩标志位。0:关闭;1:一阶段压缩;2:两阶段压缩。默认值:2。(可通过 alter database 修改)
-
wal:WAL级别。1:写wal,但不执行fsync;2:写wal, 而且执行fsync。默认值:1。(在 taos.cfg 中参数名需要写作 walLevel)
-
fsync:当wal设置为2时,执行fsync的周期。设置为0,表示每次写入,立即执行fsync。单位为毫秒,默认值:3000。
-
cache:内存块的大小。单位为兆字节(MB),默认值:16。
-
blocks:每个VNODE(TSDB)中有多少cache大小的内存块。因此一个VNODE的用的内存大小粗略为(cache
*
blocks)。单位为块,默认值:4。(可通过 alter database 修改)
-
replica:副本个数。取值范围:1-3,单位为个,默认值:1。(可通过 alter database 修改)
-
quorum:多副本环境下指令执行的确认数要求。取值范围:1、2,单位为个,默认值:1。(可通过 alter database 修改)
-
precision:时间戳精度标识。ms表示毫秒,us表示微秒,默认值:ms。(2.1.2.0 版本之前、2.0.20.7 版本之前在 taos.cfg 文件中不支持此参数。)
-
cacheLast:是否在内存中缓存子表的最近数据。0:关闭;1:缓存子表最近一行数据;2:缓存子表每一列的最近的非NULL值;3:同时打开缓存最近行和列功能。默认值:0。(可通过 alter database 修改)(从 2.1.2.0 版本开始此参数支持 0~3 的取值范围,在此之前取值只能是 [0, 1];而 2.0.11.0 之前的版本在 SQL 指令中不支持此参数。)(2.1.2.0 版本之前、2.0.20.7 版本之前在 taos.cfg 文件中不支持此参数。)
-
update:是否允许更新。0:不允许;1:允许。默认值:0。
|
**#**
|
**配置参数名称**
|
**单位**
|
**含义**
|
**取值范围**
|
**缺省值**
|
| ----- | ---------------- | -------- | ------------------------------------------------------------ | ------------------------------------------------ | ---------- |
| 1 | days | 天 | 一个数据文件存储数据的时间跨度 | | 10 |
| 2 | keep | 天 | (可通过 alter database 修改
<!-- REPLACE_OPEN_TO_ENTERPRISE__KEEP_PARAM_DESCRIPTION_IN_PARAM_LIST -->
)数据库中数据保留的天数。 | 3650 |
| 3 | cache | MB | 内存块的大小 | | 16 |
| 4 | blocks | | (可通过 alter database 修改)每个 VNODE(TSDB)中有多少个 cache 大小的内存块。因此一个 VNODE 使用的内存大小粗略为(cache
*
blocks)。 | | 4 |
| 5 | quorum | | (可通过 alter database 修改)多副本环境下指令执行的确认数要求 | 1-2 | 1 |
| 6 | minRows | | 文件块中记录的最小条数 | | 100 |
| 7 | maxRows | | 文件块中记录的最大条数 | | 4096 |
| 8 | comp | | (可通过 alter database 修改)文件压缩标志位 | 0:关闭,1:一阶段压缩,2:两阶段压缩 | 2 |
| 9 | walLevel | | (作为 database 的参数时名为 wal;在 taos.cfg 中作为参数时需要写作 walLevel)WAL级别 | 1:写wal,但不执行fsync;2:写wal, 而且执行fsync | 1 |
| 10 | fsync | 毫秒 | 当wal设置为2时,执行fsync的周期。设置为0,表示每次写入,立即执行fsync。 | | 3000 |
| 11 | replica | | (可通过 alter database 修改)副本个数 | 1-3 | 1 |
| 12 | precision | | 时间戳精度标识(2.1.2.0 版本之前、2.0.20.7 版本之前在 taos.cfg 文件中不支持此参数。) | ms 表示毫秒,us 表示微秒 | ms |
| 13 | update | | 是否允许更新 | 0:不允许;1:允许 | 0 |
| 14 | cacheLast | | (可通过 alter database 修改)是否在内存中缓存子表的最近数据(从 2.1.2.0 版本开始此参数支持 0~3 的取值范围,在此之前取值只能是 [0, 1];而 2.0.11.0 之前的版本在 SQL 指令中不支持此参数。)(2.1.2.0 版本之前、2.0.20.7 版本之前在 taos.cfg 文件中不支持此参数。) | 0:关闭;1:缓存子表最近一行数据;2:缓存子表每一列的最近的非NULL值;3:同时打开缓存最近行和列功能 | 0 |
对于一个应用场景,可能有多种数据特征的数据并存,最佳的设计是将具有相同数据特征的表放在一个库里,这样一个应用有多个库,而每个库可以配置不同的存储参数,从而保证系统有最优的性能。TDengine允许应用在创建库时指定上述存储参数,如果指定,该参数就将覆盖对应的系统配置参数。举例,有下述SQL:
```
create database demo days 10 cache 32 blocks 8 replica 3 update
1;
```
mysql
CREATE DATABASE demo DAYS 10 CACHE 32 BLOCKS 8 REPLICA 3 UPDATE
1;
```
该SQL创建了一个库demo, 每个数据文件存储10天数据,内存块为32兆字节,每个VNODE占用8个内存块,副本数为3,允许更新,而其他参数与系统配置完全一致。
一个数据库创建成功后,仅部分参数可以修改并实时生效,其余参数不能修改:
|
**参数名**
|
**能否修改**
|
**范围**
|
**修改语法示例**
|
| ----------- | ------------ | ------------------------------------------------------------ | ------------------------------------- |
| name | | | |
| create time | | | |
| ntables | | | |
| vgroups | | | |
| replica |
**YES**
| 在线dnode数目为1:1-1;2:1-2;>=3:1-3 | ALTER DATABASE
<dbname>
REPLICA
*n*
|
| quorum |
**YES**
| 1-2 | ALTER DATABASE
<dbname>
QUORUM
*n*
|
| days | | | |
| keep |
**YES**
| days-365000 | ALTER DATABASE
<dbname>
KEEP
*n*
|
| cache | | | |
| blocks |
**YES**
| 3-1000 | ALTER DATABASE
<dbname>
BLOCKS
*n*
|
| minrows | | | |
| maxrows | | | |
| wal | | | |
| fsync | | | |
| comp |
**YES**
| 0-2 | ALTER DATABASE
<dbname>
COMP
*n*
|
| precision | | | |
| status | | | |
| update | | | |
| cachelast |
**YES**
| 0
\|
1
\|
2
\|
3 | ALTER DATABASE
<dbname>
CACHELAST
*n*
|
**说明:**
在 2.1.3.0 版本之前,通过 ALTER DATABASE 语句修改这些参数后,需要重启服务器才能生效。
TDengine集群中加入一个新的dnode时,涉及集群相关的一些参数必须与已有集群的配置相同,否则不能成功加入到集群中。会进行校验的参数如下:
-
numOfMnodes:系统中管理节点个数。默认值:3。(2.0 版本从 2.0.20.11 开始、2.1 及以上版本从 2.1.6.0 开始,numOfMnodes 默认值改为 1。)
...
...
@@ -172,7 +307,7 @@ ALTER DNODE <dnode_id> <config>
alter dnode 1 debugFlag 135;
```
## <a class="anchor" id="client"></a>客户端配置
## <a class="anchor" id="client"></a>客户端
及应用驱动
配置
TDengine系统的前台交互客户端应用程序为taos,以及应用驱动,它与taosd共享同一个配置文件taos.cfg。运行taos时,使用参数-c指定配置文件目录,如taos -c /home/cfg,表示使用/home/cfg/目录下的taos.cfg配置文件中的参数,缺省目录是/etc/taos。更多taos的使用方法请见帮助信息
`taos --help`
。本节主要说明 taos 客户端应用在配置文件 taos.cfg 文件中使用到的参数。
...
...
@@ -182,15 +317,15 @@ TDengine系统的前台交互客户端应用程序为taos,以及应用驱动
taos
-C
或 taos
--dump-config
```
客户端
配置参数
客户端
及应用驱动配置参数列表及解释
-
firstEp: taos启动时,主动连接的集群中第一个taosd实例的end point, 缺省值为 localhost:6030。
-
secondEp: taos 启动时,如果 firstEp 连不上,将尝试连接 secondEp。
-
locale
-
locale
:系统区位信息及编码格式。
默认值:系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过API设置
默认值:系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过API设置
。
TDengine为存储中文、日文、韩文等非ASCII编码的宽字符,提供一种专门的字段类型nchar。写入nchar字段的数据将统一采用UCS4-LE格式进行编码并发送到服务器。需要注意的是,编码正确性是客户端来保证。因此,如果用户想要正常使用nchar字段来存储诸如中文、日文、韩文等非ASCII字符,需要正确设置客户端的编码格式。
...
...
@@ -198,9 +333,9 @@ taos -C 或 taos --dump-config
在 Linux 中 locale 的命名规则为: <语言>\_<地区>.<字符集编码> 如:zh_CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。字符集编码为客户端正确解析本地字符串提供编码转换的说明。Linux系统与 Mac OSX 系统可以通过设置locale来确定系统的字符编码,由于Windows使用的locale中不是POSIX标准的locale格式,因此在Windows下需要采用另一个配置参数charset来指定字符编码。在Linux 系统中也可以使用charset来指定字符编码。
-
charset
-
charset
:字符集编码。
默认值:系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过API设置
默认值:系统中动态获取,如果自动获取失败,需要用户在配置文件设置或通过API设置
。
如果配置文件中不设置charset,在Linux系统中,taos在启动时候,自动读取系统当前的locale信息,并从locale信息中解析提取charset编码格式。如果自动读取locale信息失败,则尝试读取charset配置,如果读取charset配置也失败,则中断启动过程。
...
...
@@ -260,7 +395,7 @@ taos -C 或 taos --dump-config
-
maxBinaryDisplayWidth
Shell中
binary 和 nchar字段的显示宽度上限,超过此限制的部分将被隐藏。默认值:30。可在
shell 中通过命令 set max_binary_display_width nn 动态修改此选项。
Shell中
binary 和 nchar 字段的显示宽度上限,超过此限制的部分将被隐藏。默认值:30。可在 taos
shell 中通过命令 set max_binary_display_width nn 动态修改此选项。
## <a class="anchor" id="user"></a>用户管理
...
...
@@ -315,7 +450,7 @@ TDengine也支持在shell对已存在的表从CSV文件中进行数据导入。C
```
mysql
insert into tb1 file 'path/data.csv';
```
注意:如果CSV文件首行存在描述信息,请手动删除后再导入
**注意:如果CSV文件首行存在描述信息,请手动删除后再导入。如某列为空,填NULL,无引号。**
例如,现在存在一个子表d1001, 其表结构如下:
...
...
@@ -343,7 +478,7 @@ taos> DESCRIBE d1001
'2018-10-11 06:38:05.000',17.30000,219,0.32000
'2018-10-12 06:38:05.000',18.30000,219,0.31000
```
那么可以用如下命令导入数据
那么可以用如下命令导入数据
:
```
mysql
taos> insert into d1001 file '~/data.csv';
...
...
@@ -360,7 +495,7 @@ TDengine提供了方便的数据库导入导出工具taosdump。用户可以将t
**按表导出CSV文件**
如果用户需要导出一个表或一个STable中的数据,可在
shell中运行
如果用户需要导出一个表或一个STable中的数据,可在
taos shell中运行:
```
mysql
select * from <tb_name> >> data.csv;
...
...
@@ -370,7 +505,9 @@ select * from <tb_name> >> data.csv;
**用taosdump导出数据**
TDengine提供了方便的数据库导出工具taosdump。用户可以根据需要选择导出所有数据库、一个数据库或者数据库中的一张表,所有数据或一时间段的数据,甚至仅仅表的定义。具体使用方法,请参见博客:
[
TDengine DUMP工具使用指南
](
https://www.taosdata.com/blog/2020/03/09/1334.html
)
利用taosdump,用户可以根据需要选择导出所有数据库、一个数据库或者数据库中的一张表,所有数据或一时间段的数据,甚至仅仅表的定义。
具体使用方法,请参见博客:
[
TDengine DUMP工具使用指南
](
https://www.taosdata.com/blog/2020/03/09/1334.html
)
。
## <a class="anchor" id="status"></a>系统连接、任务查询管理
...
...
@@ -435,46 +572,100 @@ COMPACT 命令对指定的一个或多个 VGroup 启动碎片重整,系统会
安装TDengine后,默认会在操作系统中生成下列目录或文件:
|
目录/文件 | 说明
|
| ------------------------- |
:
----------------------------------------------------------- |
|
**目录/文件**
|
**说明**
|
| ------------------------- |
-
----------------------------------------------------------- |
| /usr/local/taos/bin | TDengine可执行文件目录。其中的执行文件都会软链接到/usr/bin目录下。 |
| /usr/local/taos/connector | TDengine各种连接器目录。 |
| /usr/local/taos/driver | TDengine动态链接库目录。会软链接到/usr/lib目录下。 |
| /usr/local/taos/examples | TDengine各种语言应用示例目录。 |
| /usr/local/taos/include | TDengine对外提供的C语言接口的头文件。 |
| /etc/taos/taos.cfg | TDengine默认[配置文件] |
| /var/lib/taos | TDengine默认数据文件目录
,可通过[配置文件]修改位置.
|
| /var/log/taos | TDengine默认日志文件目录
,可通过[配置文件]修改位置
|
| /var/lib/taos | TDengine默认数据文件目录
。可通过[配置文件]修改位置。
|
| /var/log/taos | TDengine默认日志文件目录
。可通过[配置文件]修改位置。
|
**可执行文件**
TDengine的所有可执行文件默认存放在 _/usr/local/taos/bin_ 目录下。其中包括:
-
_taosd_:TDengine服务端可执行文件
-
_taos_: TDengine Shell可执行文件
-
_taosdump_:数据导入导出工具
-
remove.sh:卸载TDengine的脚本, 请谨慎执行,链接到/usr/bin目录下的rmtaos命令。会删除TDengine的安装目录/usr/local/taos,但会保留/etc/taos、/var/lib/taos、/var/log/taos。
-
*taosd*
:TDengine服务端可执行文件
-
*taos*
:TDengine Shell可执行文件
-
*taosdump*
:数据导入导出工具
-
*taosdemo*
:TDengine测试工具
-
remove.sh:卸载TDengine的脚本,请谨慎执行,链接到/usr/bin目录下的
**rmtaos**
命令。会删除TDengine的安装目录/usr/local/taos,但会保留/etc/taos、/var/lib/taos、/var/log/taos。
您可以通过修改系统配置文件taos.cfg来配置不同的数据目录和日志目录。
## TDengine 的启动、停止、卸载
TDengine 使用 Linux 系统的 systemd/systemctl/service 来管理系统的启动和、停止、重启操作。TDengine 的服务进程是 taosd,默认情况下 TDengine 在系统启动后将自动启动。DBA 可以通过 systemd/systemctl/service 手动操作停止、启动、重新启动服务。
以 systemctl 为例,命令如下:
-
启动服务进程:
`systemctl start taosd`
-
停止服务进程:
`systemctl stop taosd`
-
重启服务进程:
`systemctl restart taosd`
-
查看服务状态:
`systemctl status taosd`
如果服务进程处于活动状态,则 status 指令会显示如下的相关信息:
```
......
Active: active (running)
......
```
如果后台服务进程处于停止状态,则 status 指令会显示如下的相关信息:
```
......
Active: inactive (dead)
......
```
卸载 TDengine,只需要执行如下命令
```
rmtaos
```
**警告:执行该命令后,TDengine 程序将被完全删除,务必谨慎使用。**
## <a class="anchor" id="keywords"></a>TDengine参数限制与保留关键字
**名称命名规则**
1.
合法字符:英文字符、数字和下划线
2.
允许英文字符或下划线开头,不允许以数字开头
3.
不区分大小写
**密码合法字符集**
`[a-zA-Z0-9!?$%^&*()_–+={[}]:;@~#|<,>.?/]`
去掉了
```‘“`\``` (单双引号、撇号、反斜杠、空格)
- 数据库名:不能包含“.”以及特殊字符,不能超过 32 个字符
-
表名:不能包含“.”以及特殊字符,与所属数据库名一起,不能超过 192 个字符
- 表名:不能包含“.”以及特殊字符,与所属数据库名一起,不能超过 192 个字符
,每行数据最大长度 16k 个字符
- 表的列名:不能包含特殊字符,不能超过 64 个字符
- 数据库名、表名、列名,都不能以数字开头,合法的可用字符集是“英文字符、数字和下划线”
-
表的列数:不能超过 1024 列
- 表的列数:不能超过 1024 列
,最少需要 2 列,第一列必须是时间戳
- 记录的最大长度:包括时间戳 8 byte,不能超过 16KB(每个 BINARY/NCHAR 类型的列还会额外占用 2 个 byte 的存储位置)
-
单条 SQL 语句默认最大字符串长度:65480 byte
- 单条 SQL 语句默认最大字符串长度:65480 byte
,但可通过系统配置参数 maxSQLLength 修改,最长可配置为 1048576 byte
- 数据库副本数:不能超过 3
- 用户名:不能超过 23 个 byte
- 用户密码:不能超过 15 个 byte
-
标签(Tags)数量:不能超过 128 个
- 标签(Tags)数量:不能超过 128 个
,可以 0 个
- 标签的总长度:不能超过 16K byte
- 记录条数:仅受存储空间限制
- 表的个数:仅受节点个数限制
- 库的个数:仅受节点个数限制
- 单个库上虚拟节点个数:不能超过 64 个
- 库的数目,超级表的数目、表的数目,系统不做限制,仅受系统资源限制
- SELECT 语句的查询结果,最多允许返回 1024 列(语句中的函数调用可能也会占用一些列空间),超限时需要显式指定较少的返回数据列,以避免语句执行报错。
目前 TDengine 有将近 200 个内部保留关键字,这些关键字无论大小写均不可以用作库名、表名、STable 名、数据列名及标签列名等。这些关键字列表如下:
...
...
@@ -519,3 +710,102 @@ TDengine的所有可执行文件默认存放在 _/usr/local/taos/bin_ 目录下
| CONNS | ID | NOTNULL | STABLE | WAL |
| COPY | IF | NOW | STABLES | WHERE |
## 诊断及其他
#### 网络连接诊断
当出现客户端应用无法访问服务端时,需要确认客户端与服务端之间网络的各端口连通情况,以便有针对性地排除故障。
目前网络连接诊断支持在:Linux 与 Linux,Linux 与 Windows 之间进行诊断测试。
诊断步骤:
1. 如拟诊断的端口范围与服务器 taosd 实例的端口范围相同,须先停掉 taosd 实例
2. 服务端命令行输入:`taos -n server -P <port>` 以服务端身份启动对端口 port 为基准端口的监听
3. 客户端命令行输入:`taos -n client -h <fqdn of server> -P <port>` 以客户端身份启动对指定的服务器、指定的端口发送测试包
服务端运行正常的话会输出以下信息
```
bash
# taos -n server -P 6000
12/21 14:50:13.522509 0x7f536f455200 UTL work as server, host:172.27.0.7 startPort:6000 endPort:6011 pkgLen:1000
12/21 14:50:13.522659 0x7f5352242700 UTL TCP server at port:6000 is listening
12/21 14:50:13.522727 0x7f5351240700 UTL TCP server at port:6001 is listening
...
...
...
12/21 14:50:13.523954 0x7f5342fed700 UTL TCP server at port:6011 is listening
12/21 14:50:13.523989 0x7f53437ee700 UTL UDP server at port:6010 is listening
12/21 14:50:13.524019 0x7f53427ec700 UTL UDP server at port:6011 is listening
12/21 14:50:22.192849 0x7f5352242700 UTL TCP: read:1000 bytes from 172.27.0.8 at 6000
12/21 14:50:22.192993 0x7f5352242700 UTL TCP: write:1000 bytes to 172.27.0.8 at 6000
12/21 14:50:22.237082 0x7f5351a41700 UTL UDP: recv:1000 bytes from 172.27.0.8 at 6000
12/21 14:50:22.237203 0x7f5351a41700 UTL UDP: send:1000 bytes to 172.27.0.8 at 6000
12/21 14:50:22.237450 0x7f5351240700 UTL TCP: read:1000 bytes from 172.27.0.8 at 6001
12/21 14:50:22.237576 0x7f5351240700 UTL TCP: write:1000 bytes to 172.27.0.8 at 6001
12/21 14:50:22.281038 0x7f5350a3f700 UTL UDP: recv:1000 bytes from 172.27.0.8 at 6001
12/21 14:50:22.281141 0x7f5350a3f700 UTL UDP: send:1000 bytes to 172.27.0.8 at 6001
...
...
...
12/21 14:50:22.677443 0x7f5342fed700 UTL TCP: read:1000 bytes from 172.27.0.8 at 6011
12/21 14:50:22.677576 0x7f5342fed700 UTL TCP: write:1000 bytes to 172.27.0.8 at 6011
12/21 14:50:22.721144 0x7f53427ec700 UTL UDP: recv:1000 bytes from 172.27.0.8 at 6011
12/21 14:50:22.721261 0x7f53427ec700 UTL UDP: send:1000 bytes to 172.27.0.8 at 6011
```
客户端运行正常会输出以下信息:
```
bash
# taos -n client -h 172.27.0.7 -P 6000
12/21 14:50:22.192434 0x7fc95d859200 UTL work as client, host:172.27.0.7 startPort:6000 endPort:6011 pkgLen:1000
12/21 14:50:22.192472 0x7fc95d859200 UTL server ip:172.27.0.7 is resolved from host:172.27.0.7
12/21 14:50:22.236869 0x7fc95d859200 UTL successed to test TCP port:6000
12/21 14:50:22.237215 0x7fc95d859200 UTL successed to test UDP port:6000
...
...
...
12/21 14:50:22.676891 0x7fc95d859200 UTL successed to test TCP port:6010
12/21 14:50:22.677240 0x7fc95d859200 UTL successed to test UDP port:6010
12/21 14:50:22.720893 0x7fc95d859200 UTL successed to test TCP port:6011
12/21 14:50:22.721274 0x7fc95d859200 UTL successed to test UDP port:6011
```
仔细阅读打印出来的错误信息,可以帮助管理员找到原因,以解决问题。
#### 启动状态及RPC诊断
`taos -n startup -h <fqdn of server>`
判断 taosd 服务端是否成功启动,是数据库管理员经常遇到的一种情形。特别当若干台服务器组成集群时,判断每个服务端实例是否成功启动就会是一个重要问题。除检索 taosd 服务端日志文件进行问题定位、分析外,还可以通过 `taos -n startup -h <fqdn of server>` 来诊断一个 taosd 进程的启动状态。
针对多台服务器组成的集群,当服务启动过程耗时较长时,可通过该命令行来诊断每台服务器的 taosd 实例的启动状态,以准确定位问题。
`taos -n rpc -h <fqdn of server>`
该命令用来诊断已经启动的 taosd 实例的端口是否可正常访问。如果 taosd 程序异常或者失去响应,可以通过 `taos -n rpc -h <fqdn of server>` 来发起一个与指定 fqdn 的 rpc 通信,看看 taosd 是否能收到,以此来判定是网络问题还是 taosd 程序异常问题。
#### sync 及 arbitrator 诊断
```
taos -n sync -P 6040 -h
<fqdn
of
server
>
taos -n sync -P 6042 -h
<fqdn
of
server
>
```
用来诊断 sync 端口是否工作正常,判断服务端 sync 模块是否成功工作。另外,-P 6042 用来诊断 arbitrator 是否配置正常,判断指定服务器的 arbitrator 是否能正常工作。
#### 服务端日志
taosd 服务端日志文件标志位 debugflag 默认为 131,在 debug 时往往需要将其提升到 135 或 143 。
一旦设定为 135 或 143,日志文件增长很快,特别是写入、查询请求量较大时,增长速度惊人。如合并保存日志,很容易把日志内的关键信息(如配置信息、错误信息等)冲掉。为此,服务端将重要信息日志与其他日志分开存放:
- taosinfo 存放重要信息日志
- taosdlog 存放其他日志
其中,taosinfo 日志文件最大长度由 numOfLogLines 来进行配置,一个 taosd 实例最多保留两个文件。
taosd 服务端日志采用异步落盘写入机制,优点是可以避免硬盘写入压力太大,对性能造成很大影响。缺点是,在极端情况下,存在少量日志行数丢失的可能。
documentation20/cn/12.taos-sql/docs.md
浏览文件 @
dda0e6e3
...
...
@@ -206,7 +206,7 @@ TDengine 缺省的时间戳是毫秒精度,但通过在 CREATE DATABASE 时传
显示当前数据库下的所有数据表信息。
说明:可在
like中使用通配符进行名称的匹配,这一通配符字符串最长不能超过24字节。
说明:可在
like 中使用通配符进行名称的匹配,这一通配符字符串最长不能超过 20 字节。( 从 2.1.6.1 版本开始,通配符字符串的长度放宽到了 100 字节,并可以通过 taos.cfg 中的 maxWildCardsLength 参数来配置这一长度限制。但不建议使用太长的通配符字符串,将有可能严重影响 LIKE 操作的执行性能。)
通配符匹配:1)'%'(百分号)匹配0到任意个字符;2)'\_'下划线匹配单个任意字符。
...
...
@@ -435,6 +435,17 @@ INSERT INTO
INSERT INTO d1001 FILE '/tmp/csvfile.csv';
```
-
**插入来自文件的数据记录,并自动建表**
从 2.1.5.0 版本开始,支持在插入来自 CSV 文件的数据时,以超级表为模板来自动创建不存在的数据表。例如:
```
mysql
INSERT INTO d21001 USING meters TAGS ('Beijing.Chaoyang', 2) FILE '/tmp/csvfile.csv';
```
也可以在一条语句中向多个表以自动建表的方式插入记录。例如:
```
mysql
INSERT INTO d21001 USING meters TAGS ('Beijing.Chaoyang', 2) FILE '/tmp/csvfile_21001.csv'
d21002 USING meters (groupId) TAGS (2) FILE '/tmp/csvfile_21002.csv';
```
**历史记录写入**
:可使用IMPORT或者INSERT命令,IMPORT的语法,功能与INSERT完全一样。
**说明:**
针对 insert 类型的 SQL 语句,我们采用的流式解析策略,在发现后面的错误之前,前面正确的部分 SQL 仍会执行。下面的 SQL 中,INSERT 语句是无效的,但是 d1001 仍会被创建。
...
...
@@ -1215,6 +1226,37 @@ TDengine支持针对数据的聚合查询。提供支持的聚合和选择函数
Query OK, 1 row(s) in set (0.001042s)
```
- **INTERP**
```mysql
SELECT INTERP(field_name) FROM { tb_name | stb_name } WHERE ts='timestamp' [FILL ({ VALUE | PREV | NULL | LINEAR})];
```
功能说明:返回表/超级表的指定时间截面、指定字段的记录。
返回结果数据类型:同应用的字段。
应用字段:所有字段。
适用于:**表、超级表**。
说明:(从 2.0.15.0 版本开始新增此函数)INTERP 必须指定时间断面,如果该时间断面不存在直接对应的数据,那么会根据 FILL 参数的设定进行插值。其中,条件语句里面可以附带更多的筛选条件,例如标签、tbname。
限制:INTERP 目前不支持 FILL(NEXT)。
示例:
```mysql
taos> select interp(*) from meters where ts='2017-7-14 10:42:00.005' fill(prev);
interp(ts) | interp(f1) | interp(f2) | interp(f3) |
====================================================================
2017-07-14 10:42:00.005 | 5 | 9 | 6 |
Query OK, 1 row(s) in set (0.002912s)
taos> select interp(*) from meters where tbname in ('t1') and ts='2017-7-14 10:42:00.005' fill(prev);
interp(ts) | interp(f1) | interp(f2) | interp(f3) |
====================================================================
2017-07-14 10:42:00.005 | 5 | 6 | 7 |
Query OK, 1 row(s) in set (0.002005s)
```
### 计算函数
- **DIFF**
...
...
src/rpc/src/rpcMain.c
浏览文件 @
dda0e6e3
...
...
@@ -1133,7 +1133,7 @@ static void rpcNotifyClient(SRpcReqContext *pContext, SRpcMsg *pMsg) {
}
else
{
// for asynchronous API
SRpcEpSet
*
pEpSet
=
NULL
;
if
(
pContext
->
epSet
.
inUse
!=
pContext
->
oldInUse
||
pContext
->
redirect
)
//
if (pContext->epSet.inUse != pContext->oldInUse || pContext->redirect)
pEpSet
=
&
pContext
->
epSet
;
(
*
pRpc
->
cfp
)(
pMsg
,
pEpSet
);
...
...
tests/pytest/fulltest.sh
浏览文件 @
dda0e6e3
...
...
@@ -343,6 +343,7 @@ python3 ./test.py -f functions/function_twa.py -r 1
python3 ./test.py
-f
functions/function_twa_test2.py
python3 ./test.py
-f
functions/function_stddev_td2555.py
python3 ./test.py
-f
functions/showOfflineThresholdIs864000.py
python3 ./test.py
-f
functions/function_interp.py
python3 ./test.py
-f
insert/metadataUpdate.py
python3 ./test.py
-f
query/last_cache.py
python3 ./test.py
-f
query/last_row_cache.py
...
...
tests/pytest/functions/function_interp.py
0 → 100644
浏览文件 @
dda0e6e3
###################################################################
# Copyright (c) 2016 by TAOS Technologies, Inc.
# All rights reserved.
#
# This file is proprietary and confidential to TAOS Technologies.
# No part of this file may be reproduced, stored, transmitted,
# disclosed or used in any form or by any means other than as
# expressly provided by the written permission from Jianhui Tao
#
###################################################################
# -*- coding: utf-8 -*-
import
sys
import
taos
from
util.log
import
*
from
util.cases
import
*
from
util.sql
import
*
import
numpy
as
np
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
tdLog
.
debug
(
"start to execute %s"
%
__file__
)
tdSql
.
init
(
conn
.
cursor
())
self
.
rowNum
=
10
self
.
ts
=
1537146000000
def
run
(
self
):
tdSql
.
prepare
()
tdSql
.
execute
(
"create table t(ts timestamp, k int)"
)
tdSql
.
execute
(
"insert into t values('2021-1-1 1:1:1', 12);"
)
tdSql
.
query
(
"select interp(*) from t where ts='2021-1-1 1:1:1'"
)
tdSql
.
checkRows
(
1
)
tdSql
.
checkData
(
0
,
1
,
12
)
tdSql
.
error
(
"select interp(*) from t where ts >'2021-1-1 1:1:1' and ts < now interval(1s) fill(next)"
)
def
stop
(
self
):
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录