Merge pull request #30019 from taosdata/doc/contrib

docs: minor changes
This commit is contained in:
Simon Guan 2025-03-05 17:45:20 +08:00 committed by GitHub
commit ba50e36363
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
47 changed files with 1649 additions and 1660 deletions

View File

@ -12,18 +12,18 @@ taosd 命令行参数如下
- -a `<json file>`:指定一个 JSON 文件,其中包含服务启动时的各项配置参数,其格式形如 `{"fqdn":"td1"}`,关于配置参数的细节请参考下一节
- -c `<directory>`:指定配置文件所在目录
- -s打印 SDB 信息
- -C: 打印配置信息
- -e: 指定环境变量的字符串,例如:`-e 'TAOS_FQDN=td1'`
- -E: 指定环境变量的文件路径,默认是 `./.env`.env 文件中的内容可以是 `TAOS_FQDN=td1`
- -o: 指定日志输入方式,可选 `stdout`, `stderr`, `/dev/null`, `<directory>`,` <directory>/<filename>`, `<filename>`
- -k: 获取机器码
- -dm: 启用内存调度
- -V: 打印版本信息
- -C打印配置信息
- -e:指定环境变量的字符串,例如 `-e 'TAOS_FQDN=td1'`
- -E指定环境变量的文件路径,默认是 `./.env`.env 文件中的内容可以是 `TAOS_FQDN=td1`
- -o:指定日志输入方式,可选 `stdout`、`stderr`、`/dev/null`、`<directory>`、` <directory>/<filename>`、`<filename>`
- -k获取机器码
- -dm启用内存调度
- -V打印版本信息
## 配置参数
:::note
配置文件参数修改后,需要重启*taosd*服务,或客户端应用才能生效
配置文件参数修改后,通常需要重启 *taosd* 服务,或客户端应用才能生效
:::
### 连接相关
@ -143,7 +143,7 @@ taosd 命令行参数如下
- 支持版本v3.3.4.0 版本之后取消
#### maxRetryWaitTime
- 说明:重连最大超时时间, 从重试时候开始计算
- 说明:重连最大超时时间从重试时候开始计算
- 类型:整数
- 单位:毫秒
- 默认值10000
@ -1327,7 +1327,7 @@ charset 的有效值是 UTF-8。
#### forceReadConfig
- 说明:配置文件所在目录
- 类型整数0:使用持久化的配置参数1:使用配置文件中的配置参数;
- 类型整数0使用持久化的配置参数1使用配置文件中的配置参数;
- 默认值0
- 最小值0
- 最大值1
@ -1342,7 +1342,7 @@ charset 的有效值是 UTF-8。
#### assert
- 说明:断言控制开关
- 类型整数0:关闭1开启
- 类型整数0关闭1开启
- 默认值0
- 最小值0
- 最大值1
@ -1420,7 +1420,7 @@ charset 的有效值是 UTF-8。
### 压缩参数
#### fPrecision
- 说明:设置 float 类型浮点数压缩精度, 小于此值的浮点数尾数部分将被截断
- 说明:设置 float 类型浮点数压缩精度小于此值的浮点数尾数部分将被截断
- 类型:浮点数
- 默认值0.00000001
- 最小值0.00000001
@ -1534,7 +1534,7 @@ taosd 会将监控指标上报给 taosKeeper这些监控指标会被 taosKeep
| :------------- | :-------- | :------ | :--------------------------------------------- |
| \_ts | TIMESTAMP | | timestamp |
| tables\_num | DOUBLE | | vgroup 中 table 数量 |
| status | DOUBLE | | vgroup 状态, 取值范围 unsynced = 0, ready = 1 |
| status | DOUBLE | | vgroup 状态,取值范围 0unsynced、1ready |
| vgroup\_id | VARCHAR | TAG | vgroup id |
| database\_name | VARCHAR | TAG | vgroup 所属的 database 名字 |
| cluster\_id | VARCHAR | TAG | cluster id |
@ -1563,10 +1563,10 @@ taosd 会将监控指标上报给 taosKeeper这些监控指标会被 taosKeep
| io\_write\_disk | DOUBLE | | 磁盘 io 吞吐率,从 `/proc/<taosd_pid>/io` 中读取的 write_bytes。单位 byte/s |
| vnodes\_num | DOUBLE | | dnode 上 vnodes 数量 |
| masters | DOUBLE | | dnode 上 master node 数量 |
| has\_mnode | DOUBLE | | dnode 是否包含 mnode取值范围 包含=1,不包含=0 |
| has\_qnode | DOUBLE | | dnode 是否包含 qnode取值范围 包含=1,不包含=0 |
| has\_snode | DOUBLE | | dnode 是否包含 snode取值范围 包含=1,不包含=0 |
| has\_bnode | DOUBLE | | dnode 是否包含 bnode取值范围 包含=1,不包含=0 |
| has\_mnode | DOUBLE | | dnode 是否包含 mnode取值范围1包含、0不包含 |
| has\_qnode | DOUBLE | | dnode 是否包含 qnode取值范围1包含、0不包含 |
| has\_snode | DOUBLE | | dnode 是否包含 snode取值范围1包含、0不包含 |
| has\_bnode | DOUBLE | | dnode 是否包含 bnode取值范围1包含、0不包含 |
| error\_log\_count | DOUBLE | | error 总数 |
| info\_log\_count | DOUBLE | | info 总数 |
| debug\_log\_count | DOUBLE | | debug 总数 |
@ -1582,7 +1582,7 @@ taosd 会将监控指标上报给 taosKeeper这些监控指标会被 taosKeep
| field | type | is\_tag | comment |
| :---------- | :-------- | :------ | :--------------------------------------- |
| \_ts | TIMESTAMP | | timestamp |
| status | DOUBLE | | dnode 状态,取值范围 ready=1offline =0 |
| status | DOUBLE | | dnode 状态,取值范围 1ready、0offline |
| dnode\_id | VARCHAR | TAG | dnode id |
| dnode\_ep | VARCHAR | TAG | dnode endpoint |
| cluster\_id | VARCHAR | TAG | cluster id |
@ -1625,7 +1625,7 @@ taosd 会将监控指标上报给 taosKeeper这些监控指标会被 taosKeep
| field | type | is\_tag | comment |
| :---------- | :-------- | :------ | :------------------------------------------------------------------------------------------------------- |
| \_ts | TIMESTAMP | | timestamp |
| role | DOUBLE | | mnode 角色, 取值范围 offline = 0,follower = 100,candidate = 101,leader = 102,error = 103,learner = 104 |
| role | DOUBLE | | mnode 角色,取值范围 0offline、100follower、101candidate、102leader、103error、104、learne |
| mnode\_id | VARCHAR | TAG | master node id |
| mnode\_ep | VARCHAR | TAG | master node endpoint |
| cluster\_id | VARCHAR | TAG | cluster id |
@ -1637,7 +1637,7 @@ taosd 会将监控指标上报给 taosKeeper这些监控指标会被 taosKeep
| field | type | is\_tag | comment |
| :------------- | :-------- | :------ | :------------------------------------------------------------------------------------------------------ |
| \_ts | TIMESTAMP | | timestamp |
| vnode\_role | DOUBLE | | vnode 角色,取值范围 offline = 0,follower = 100,candidate = 101,leader = 102,error = 103,learner = 104 |
| vnode\_role | DOUBLE | | vnode 角色,取值范围 0offline、100follower、101candidate、102leader、103error、104、learne |
| vgroup\_id | VARCHAR | TAG | dnode id |
| dnode\_id | VARCHAR | TAG | dnode id |
| database\_name | VARCHAR | TAG | vgroup 所属的 database 名字 |
@ -1651,7 +1651,7 @@ taosd 会将监控指标上报给 taosKeeper这些监控指标会被 taosKeep
| :---------- | :-------- | :------ | :--------------------------------------- |
| \_ts | TIMESTAMP | | timestamp |
| count | DOUBLE | | sql 数量 |
| result | VARCHAR | TAG | sql的执行结果,取值范围 Success, Failed |
| result | VARCHAR | TAG | sql 的执行结果,取值范围 Success、Failed |
| username | VARCHAR | TAG | 执行 sql 的 user name |
| sql\_type | VARCHAR | TAG | sql 类型,取值范围 inserted_rows |
| dnode\_id | VARCHAR | TAG | dnode id |
@ -1667,9 +1667,9 @@ taosd 会将监控指标上报给 taosKeeper这些监控指标会被 taosKeep
| :---------- | :-------- | :------ | :---------------------------------------- |
| \_ts | TIMESTAMP | | timestamp |
| count | DOUBLE | | sql 数量 |
| result | VARCHAR | TAG | sql的执行结果,取值范围 Success, Failed |
| result | VARCHAR | TAG | sql 的执行结果,取值范围 Success、Failed |
| username | VARCHAR | TAG | 执行 sql 的 user name |
| sql\_type | VARCHAR | TAG | sql类型,取值范围 select, insertdelete |
| sql\_type | VARCHAR | TAG | sql 类型,取值范围 select、insert、delete |
| cluster\_id | VARCHAR | TAG | cluster id |
### taos\_slow\_sql 表
@ -1680,7 +1680,7 @@ taosd 会将监控指标上报给 taosKeeper这些监控指标会被 taosKeep
| :---------- | :-------- | :------ | :---------------------------------------------------- |
| \_ts | TIMESTAMP | | timestamp |
| count | DOUBLE | | sql 数量 |
| result | VARCHAR | TAG | sql的执行结果,取值范围 Success, Failed |
| result | VARCHAR | TAG | sql 的执行结果,取值范围 Success、Failed |
| username | VARCHAR | TAG | 执行 sql 的 user name |
| duration | VARCHAR | TAG | sql 执行耗时,取值范围 3-10s,10-100s,100-1000s,1000s- |
| cluster\_id | VARCHAR | TAG | cluster id |
@ -1693,10 +1693,10 @@ taosd 会将监控指标上报给 taosKeeper这些监控指标会被 taosKeep
| :------------- | :-------- | :------ | :---------------------------------------------------- |
| start\_ts | TIMESTAMP | | sql 开始执行的客户端时间单位ms主键 |
| request\_id | UINT64_T | | sql 请求的 request id为 hash 生产的随机值 |
| query\_time | INT32_T | | sql 执行耗时, 单位ms |
| query\_time | INT32_T | | sql 执行耗时单位ms |
| code | INT32_T | | sql 执行返回码0表示成功 |
| error\_info | VARCHAR | | sql 执行失败时,记录的错误信息 |
| type | INT8_T | | sql 语句的类型1-查询2-写入4-其他) |
| type | INT8_T | | sql 语句的类型1查询2写入4其他) |
| rows\_num | INT64_T | | sql 执行结果的记录数目 |
| sql | VARCHAR | | sql 语句的字符串 |
| process\_name | VARCHAR | | 进程名称 |

View File

@ -42,17 +42,17 @@ tmq+ws://root:taosdata@localhost:6030/db1?timeout=never
- taos使用查询接口从 TDengine 获取数据
- tmq启用数据订阅从 TDengine 获取数据
- local数据备份或恢复
- pi: 启用 pi-connector从 pi 数据库中获取数据
- pi启用 pi-connector从 pi 数据库中获取数据
- opc启用 opc-connector 从 opc-server 中获取数据
- mqtt: 启用 mqtt-connector 获取 mqtt-broker 中的数据
- kafka: 启用 Kafka 连接器从 Kafka Topics 中订阅消息写入
- influxdb: 启用 influxdb 连接器从 InfluxDB 获取数据
- mqtt启用 mqtt-connector 获取 mqtt-broker 中的数据
- kafka启用 Kafka 连接器从 Kafka Topics 中订阅消息写入
- influxdb 启用 influxdb 连接器从 InfluxDB 获取数据
- csv从 CSV 文件解析数据
2. +protocol 包含如下选项:
- +ws: 当 driver 取值为 taos 或 tmq 时使用,表示使用 rest 获取数据。不使用 +ws 则表示使用原生连接获取数据,此时需要 taosx 所在的服务器安装 taosc。
- +ua: 当 driver 取值为 opc 时使用,表示采集的数据的 opc-server 为 opc-ua
- +da: 当 driver 取值为 opc 时使用,表示采集的数据的 opc-server 为 opc-da
- +ws当 driver 取值为 taos 或 tmq 时使用,表示使用 rest 获取数据。不使用 +ws 则表示使用原生连接获取数据,此时需要 taosx 所在的服务器安装 taosc。
- +ua当 driver 取值为 opc 时使用,表示采集的数据的 opc-server 为 opc-ua
- +da当 driver 取值为 opc 时使用,表示采集的数据的 opc-server 为 opc-da
3. host:port 表示数据源的地址和端口。
4. object 表示具体的数据源可以是TDengine的数据库、超级表、表也可以是本地备份文件的路径也可以是对应数据源服务器中的数据库。
@ -251,7 +251,7 @@ d4,2017-07-14T10:40:00.006+08:00,-2.740636,10,-0.893545,7,California.LosAngles
- `monitor.port``taosKeeper` 服务的端口,默认`6043`。
- `monitor.interval`:向 `taosKeeper` 发送指标的频率,默认为每 10 秒一次,只有 1 到 10 之间的值才有效。
- `log.path`:日志文件存放的目录。
- `log.level`:日志级别,可选值为 "error", "warn", "info", "debug", "trace"。
- `log.level`:日志级别,可选值为 "error"、"warn"、"info"、"debug"、"trace"。
- `log.compress`:日志文件滚动后的文件是否进行压缩。
- `log.rotationCount`:日志文件目录下最多保留的文件数,超出数量的旧文件被删除。
- `log.rotationSize`:触发日志文件滚动的文件大小(单位为字节),当日志文件超出此大小后会生成一个新文件,新的日志会写入新文件。
@ -401,8 +401,8 @@ taosX 会将监控指标上报给 taosKeeper这些监控指标会被 taosKeep
| -------------------------- | ----------------------------------------------------------------------------- |
| sys_cpu_cores | 系统 CPU 核数 |
| sys_total_memory | 系统总内存,单位:字节 |
| sys_used_memory | 系统已用内存, 单位:字节 |
| sys_available_memory | 系统可用内存, 单位:字节 |
| sys_used_memory | 系统已用内存单位:字节 |
| sys_available_memory | 系统可用内存单位:字节 |
| process_uptime | taosX 运行时长,单位:秒 |
| process_id | taosX 进程 ID |
| running_tasks | taosX 当前执行任务数 |
@ -420,8 +420,8 @@ taosX 会将监控指标上报给 taosKeeper这些监控指标会被 taosKeep
| -------------------------- | ----------------------------------------------------------------------------- |
| sys_cpu_cores | 系统 CPU 核数 |
| sys_total_memory | 系统总内存,单位:字节 |
| sys_used_memory | 系统已用内存, 单位:字节 |
| sys_available_memory | 系统可用内存, 单位:字节 |
| sys_used_memory | 系统已用内存单位:字节 |
| sys_available_memory | 系统可用内存单位:字节 |
| process_uptime | agent 运行时长,单位:秒 |
| process_id | agent 进程 id |
| process_cpu_percent | agent 进程占用 CPU 百分比 |
@ -457,7 +457,7 @@ taosX 会将监控指标上报给 taosKeeper这些监控指标会被 taosKeep
| 字段 | 描述 |
| --------------------- | -------------------------------------------------------------------- |
| read_concurrency | 并发读取数据源的数据 worker 数, 也等于并发写入 TDengine 的 worker 数 |
| read_concurrency | 并发读取数据源的数据 worker 数也等于并发写入 TDengine 的 worker 数 |
| total_stables | 需要迁移的超级表数据数量 |
| total_updated_tags | 累计更新 tag 数 |
| total_created_tables | 累计创建子表数 |
@ -566,9 +566,9 @@ taosX Parser 插件是一个要求用 C/Rust 语言开发的 C ABI 兼容动态
**函数签名**parser_resp_t parser_new(char* ctx, uint32_t len);
char* ctx: 用户自定义配置字符串。
char* ctx用户自定义配置字符串。
uint32_t len: 该字符串的二进制长度(不含 `\0`)。
uint32_t len该字符串的二进制长度(不含 `\0`)。
**返回值**
@ -597,11 +597,11 @@ const char* parser_mutate(
);
```
`void* parser`: parser_new 生成的对象指针;
`void* parser`parser_new 生成的对象指针;
`const uint8_t* in_ptr`:输入 Payload 的指针;
`uint32_t in_len`: 输入 Payload 的 bytes 长度(不含 `\0`;
`uint32_t in_len`输入 Payload 的 bytes 长度(不含 `\0`;
`const void* uint8_t* out_ptr`:输出 JSON 字符串的指针(不含 \0。当 out_ptr 指向为空时,表示输出为空。
@ -615,4 +615,4 @@ const char* parser_mutate(
**函数签名** void parser_free(void* parser);
void* parser: parser_new 生成的对象指针。
void* parserparser_new 生成的对象指针。

View File

@ -7,14 +7,14 @@ sidebar_label: taosX-Agent
## 配置
`Agent` 默认的配置文件位于 `/etc/taos/agent.toml`, 包含以下配置项:
`Agent` 默认的配置文件位于 `/etc/taos/agent.toml`包含以下配置项:
- `endpoint`: 必填,`taosX` 的 GRPC 服务地址。
- `token`: 必填,在 `Explorer` 上创建 `Agent` 时,产生的 Token。
- `endpoint`必填,`taosX` 的 GRPC 服务地址。
- `token`必填,在 `Explorer` 上创建 `Agent` 时,产生的 Token。
- `instanceId`:当前 taosx-agent 服务的实例 ID如果同一台机器上启动了多个 taosx-agent 实例,必须保证各个实例的实例 ID 互不相同。
- `compression`: 非必填,可配置为 `true``false`, 默认为 `false`。配置为`true`, 则开启 `Agent``taosX` 通信数据压缩。
- `in_memory_cache_capacity`: 非必填,表示可在内存中缓存的最大消息批次数,可配置为大于 0 的整数。默认为 `64`
- `log_level`: 非必填,日志级别,默认为 `info`, 同 `taosX` 一样,支持 `error``warn``info``debug``trace` 五级。已弃用,请使用 `log.level` 代替。
- `compression`非必填,可配置为 `true``false`, 默认为 `false`。配置为`true`, 则开启 `Agent``taosX` 通信数据压缩。
- `in_memory_cache_capacity`非必填,表示可在内存中缓存的最大消息批次数,可配置为大于 0 的整数。默认为 `64`
- `log_level`非必填,日志级别,默认为 `info`, 同 `taosX` 一样,支持 `error``warn``info``debug``trace` 五级。已弃用,请使用 `log.level` 代替。
- `log_keep_days`:非必填,日志保存天数,默认为 `30` 天。已弃用,请使用 `log.keepDays` 代替。
- `log.path`:日志文件存放的目录。
- `log.level`:日志级别,可选值为 "error", "warn", "info", "debug", "trace"。

View File

@ -13,7 +13,7 @@ taosKeeper 是 TDengine 3.0 版本监控指标的导出工具,通过简单的
taosKeeper 有两种安装方式:
- 安装 TDengine 官方安装包的同时会自动安装 taosKeeper, 详情请参考[TDengine 安装](../../../get-started/)。
- 安装 TDengine 官方安装包的同时会自动安装 taosKeeper,详情请参考 [TDengine 安装](../../../get-started/)。
- 单独编译 taosKeeper 并安装,详情请参考 [taosKeeper](https://github.com/taosdata/taoskeeper) 仓库。
@ -354,7 +354,7 @@ taos_cluster_info_first_ep_dnode_id{cluster_id="554014120921134497"} 1
| 指标名称 | 类型 | 含义 |
| ------------------------------ | ------- | ---------------------------------------------------------------------------------------- |
| taos_d_info_status | gauge | dnode 状态,标签 value 表示状态 ready 表示正常, offline 表示下线, unknown 表示未知。 |
| taos_d_info_status | gauge | dnode 状态,标签 value 表示状态、ready 表示正常、offline 表示下线、unknown 表示未知。 |
| taos_dnodes_info_cpu_cores | gauge | CPU 核心数 |
| taos_dnodes_info_cpu_engine | gauge | 该 dnode 的进程所使用的 CPU 百分比(取值范围 0~100 |
| taos_dnodes_info_cpu_system | gauge | 该 dnode 所在节点的系统使用的 CPU 百分比(取值范围 0~100 |
@ -474,64 +474,64 @@ taos_cluster_info_first_ep_dnode_id{cluster_id="554014120921134497"} 1
##### taos_m_info_role
- **标签**:
- `cluster_id`: 集群 id
- `mnode_ep`: mnode 端点
- `mnode_id`: mnode id
- `value`: 角色值(该 mnode 的状态取值范围offline, follower, candidate, leader, error, learner
- **类型**: gauge
- **含义**: mnode 角色
- `cluster_id`集群 id
- `mnode_ep`mnode 端点
- `mnode_id`mnode id
- `value`:角色值(该 mnode 的状态取值范围offline、follower、candidate、leader、error、learner
- **类型**gauge
- **含义**mnode 角色
##### taos_taos_sql_req_count
- **标签**:
- `cluster_id`: 集群 id
- `result`: 请求结果(取值范围: Success, Failed
- `sql_type`: SQL 类型取值范围select, insertinserted_rows, delete
- `username`: 用户名
- **类型**: gauge
- **含义**: SQL 请求数量
- `cluster_id`集群 id
- `result`请求结果取值范围Success、Failed
- `sql_type`SQL 类型取值范围select、insert、inserted_rows、delete
- `username`用户名
- **类型**gauge
- **含义**SQL 请求数量
##### taos_taosd_sql_req_count
- **标签**:
- `cluster_id`: 集群 id
- `dnode_ep`: dnode 端点
- `dnode_id`: dnode id
- `result`: 请求结果(取值范围: Success, Failed
- `sql_type`: SQL 类型取值范围select, insertinserted_rows, delete
- `username`: 用户名
- `vgroup_id`: 虚拟组 id
- **类型**: gauge
- **含义**: SQL 请求数量
- `cluster_id`集群 id
- `dnode_ep`dnode 端点
- `dnode_id`dnode id
- `result`请求结果取值范围Success、Failed
- `sql_type`SQL 类型取值范围select、insert、inserted_rows、delete
- `username`用户名
- `vgroup_id`虚拟组 id
- **类型**gauge
- **含义**SQL 请求数量
##### taos_taosd_vgroups_info_status
- **标签**:
- `cluster_id`: 集群 id
- `database_name`: 数据库名称
- `vgroup_id`: 虚拟组 id
- **类型**: gauge
- **含义**: 虚拟组状态。 0 为 unsynced表示没有 leader 选出1 为 ready。
- `cluster_id`集群 id
- `database_name`数据库名称
- `vgroup_id`虚拟组 id
- **类型**gauge
- **含义**虚拟组状态。 0 为 unsynced表示没有 leader 选出1 为 ready。
##### taos_taosd_vgroups_info_tables_num
- **标签**:
- `cluster_id`: 集群 id
- `database_name`: 数据库名称
- `vgroup_id`: 虚拟组 id
- **类型**: gauge
- **含义**: 虚拟组表数量
- `cluster_id`集群 id
- `database_name`数据库名称
- `vgroup_id`虚拟组 id
- **类型**gauge
- **含义**虚拟组表数量
##### taos_taosd_vnodes_info_role
- **标签**:
- `cluster_id`: 集群 id
- `database_name`: 数据库名称
- `dnode_id`: dnode id
- `value`: 角色值取值范围offline, follower, candidate, leader, error, learner
- `vgroup_id`: 虚拟组 id
- **类型**: gauge
- **含义**: 虚拟节点角色
- `cluster_id`集群 id
- `database_name`数据库名称
- `dnode_id`dnode id
- `value`角色值取值范围offline、follower、candidate、leader、error、learner
- `vgroup_id`虚拟组 id
- **类型**gauge
- **含义**虚拟节点角色
### 抽取配置

View File

@ -128,7 +128,7 @@ cors = true
- `addr`taosExplorer 服务绑定的 IPv4 地址,默认为 `0.0.0.0`。如需修改,请配置为 `localhost` 之外的地址以对外提供服务。
- `ipv6`taosExplorer 服务绑定的 IPv6 地址,默认不绑定 IPv6 地址。
- `instanceId`:当前 explorer 服务的实例 ID如果同一台机器上启动了多个 explorer 实例,必须保证各个实例的实例 ID 互不相同。
- `log_level`:日志级别,可选值为 "error", "warn", "info", "debug", "trace"。此参数已弃用,请使用 `log.level` 代替。
- `log_level`:日志级别,可选值为 "error"、"warn"、"info"、"debug"、"trace"。此参数已弃用,请使用 `log.level` 代替。
- `cluster`TDengine 集群的 taosAdapter 地址。
- `cluster_native`TDengine 集群的原生连接地址,默认关闭。
- `x_api`taosX 的 gRPC 地址。
@ -137,7 +137,7 @@ cors = true
- `ssl.certificate`SSL 证书(如果同时设置了 certificate 与 certificate_key 两个参数,则启用 HTTPS 服务,否则不启用)。
- `ssl.certificate_key`SSL 证书密钥。
- `log.path`:日志文件存放的目录。
- `log.level`:日志级别,可选值为 "error", "warn", "info", "debug", "trace"。
- `log.level`:日志级别,可选值为 "error"、"warn"、"info"、"debug"、"trace"。
- `log.compress`:日志文件滚动后的文件是否进行压缩。
- `log.rotationCount`:日志文件目录下最多保留的文件数,超出数量的旧文件被删除。
- `log.rotationSize`:触发日志文件滚动的文件大小(单位为字节),当日志文件超出此大小后会生成一个新文件,新的日志会写入新文件。
@ -226,4 +226,4 @@ sc.exe stop taos-explorer # Windows
其他功能页面,如 `数据写入-数据源` 等页面,为企业版特有功能,您可以点击查看和简单体验,并不能实际使用。
如果由于网络原因无法完成注册环节,则需要在有外网的环境注册完毕,然后把注册好的 /etc/taos/explorer-register.cfg 替换到内网环境。
如果由于网络原因无法完成注册环节,则需要在有外网的环境注册完毕,然后把注册好的 `/etc/taos/explorer-register.cfg` 替换到内网环境。

View File

@ -37,20 +37,20 @@ taos> quit
### 基础参数
可通过配置命令行参数来改变 TDengine CLI 的行为。以下为常用的几个命令行参数:
- -h HOST: 要连接的 TDengine 服务端所在服务器的 FQDN, 默认值: 127.0.0.1
- -P PORT: 指定服务端所用端口号默认值6030
- -u USER: 连接时使用的用户名默认值root
- -p PASSWORD: 连接服务端时使用的密码,特殊字符如 `! & ( ) < > ; |` 需使用字符 `\` 进行转义处理, 默认值taosdata
- -?, --help: 打印出所有命令行参数。
- -s COMMAND: 以非交互模式执行的 SQL 命令。
- -h HOST要连接的 TDengine 服务端所在服务器的 FQDN, 默认值127.0.0.1。
- -P PORT指定服务端所用端口号默认值6030
- -u USER连接时使用的用户名默认值root
- -p PASSWORD连接服务端时使用的密码,特殊字符如 `! & ( ) < > ; |` 需使用字符 `\` 进行转义处理, 默认值taosdata。
- -?, --help打印出所有命令行参数。
- -s COMMAND以非交互模式执行的 SQL 命令。
使用 `-s` 参数可进行非交互式执行 SQL执行完成后退出此模式适合在自动化脚本中使用。
如以下命令连接到服务器 h1.taos.com, 执行 -s 指定的 SQL:
如以下命令连接到服务器 h1.taos.com, 执行 -s 指定的 SQL
```bash
taos -h my-server -s "use db; show tables;"
```
- -c CONFIGDIR: 指定配置文件目录。
- -c CONFIGDIR指定配置文件目录。
Linux 环境下默认为 `/etc/taos`,该目录下的配置文件默认名称为 `taos.cfg`
使用 `-c` 参数改变 `taosc` 客户端加载配置文件的位置,客户端配置参数参考 [客户端配置](../../components/taosc)。
@ -61,23 +61,23 @@ taos> quit
### 高级参数
- -a AUTHSTR: 连接服务端的授权信息。
- -A: 通过用户名和密码计算授权信息。
- -B: 设置 BI 工具显示模式,设置后所有输出都遵循 BI 工具的格式进行输出。
- -C: 打印 -c 指定的目录中 `taos.cfg` 的配置参数。
- -d DATABASE: 指定连接到服务端时使用的数据库。
- -E dsn: 使用 WebSocket DSN 连接云服务或者提供 WebSocket 连接的服务端。
- -f FILE: 以非交互模式执行 SQL 脚本文件。文件中一个 SQL 语句只能占一行。
- -k: 测试服务端运行状态0: unavailable1: network ok2: service ok3: service degraded4: exiting
- -l PKTLEN: 网络测试时使用的测试包大小。
- -n NETROLE: 网络连接测试时的测试范围,默认为 `client`, 可选值为 `client`、`server`
- -N PKTNUM: 网络测试时使用的测试包数量。
- -r: 将时间列转化为无符号 64 位整数类型输出(即 C 语言中 uint64_t)
- -R: 使用 RESTful 模式连接服务端。
- -t: 测试服务端启动状态,状态同 -k
- -w DISPLAYWIDTH: 客户端列显示宽度。
- -z TIMEZONE: 指定时区,默认为本地时区。
- -V: 打印出当前版本号。
- -a AUTHSTR连接服务端的授权信息。
- -A通过用户名和密码计算授权信息。
- -B设置 BI 工具显示模式,设置后所有输出都遵循 BI 工具的格式进行输出。
- -C打印 -c 指定的目录中 `taos.cfg` 的配置参数。
- -d DATABASE指定连接到服务端时使用的数据库。
- -E dsn使用 WebSocket DSN 连接云服务或者提供 WebSocket 连接的服务端。
- -f FILE以非交互模式执行 SQL 脚本文件。文件中一个 SQL 语句只能占一行。
- -k测试服务端运行状态0unavailable、1network ok、2service ok、3service degraded、4exiting
- -l PKTLEN网络测试时使用的测试包大小。
- -n NETROLE:网络连接测试时的测试范围,默认为 `client`,可选值为 `client`、`server`
- -N PKTNUM网络测试时使用的测试包数量。
- -r将时间列转化为无符号 64 位整数类型输出(即 C 语言中 uint64_t)。
- -R使用 RESTful 模式连接服务端。
- -t:测试服务端启动状态,状态同 -k
- -w DISPLAYWIDTH客户端列显示宽度。
- -z TIMEZONE指定时区,默认为本地时区。
- -V打印出当前版本号。
## 数据导出/导入
@ -123,7 +123,7 @@ taos> SET MAX_BINARY_DISPLAY_WIDTH 120;
- 在 TDengine CLI 中使用 `alter user` 命令可以修改用户密码,缺省密码为 `taosdata`
- Ctrl+C 中止正在进行中的查询。
- 执行 `RESET QUERY CACHE` 可清除本地表 Schema 的缓存。
- 批量执行 SQL 语句。可以将一系列的 TDengine CLI 命令(以英文 ; 结尾,每个 SQL 语句为一行)按行存放在文件里,在 TDengine CLI 里执行命令 `source <file-name>` 自动执行该文件里所有的 SQL 语句。
- 批量执行 SQL 语句。可以将一系列的 TDengine CLI 命令(以英文 `;` 结尾,每个 SQL 语句为一行)按行存放在文件里,在 TDengine CLI 里执行命令 `source <file-name>` 自动执行该文件里所有的 SQL 语句。
## 错误代码表
在 TDengine 3.3.4.8 版本后 TDengine CLI 在返回错误信息中返回了具体错误码,用户可到 TDengine 官网错误码页面查找具体原因及解决措施,见:[错误码参考表](https://docs.taosdata.com/reference/error-code/)

View File

@ -52,7 +52,7 @@ taosBenchmark -f <json file>
| -c/--config-dir \<dir> | TDengine 集群配置文件所在的目录,默认路径是 /etc/taos |
| -h/--host \<host> | 指定要连接的 TDengine 服务端的 FQDN默认值为 localhost |
| -P/--port \<port> | 要连接的 TDengine 服务器的端口号,默认值为 6030 |
| -I/--interface \<insertMode> | 插入模式,可选项有 taosc, rest, stmt, sml, sml-rest, 分别对应普通写入、restful 接口写入、参数绑定接口写入、schemaless 接口写入、restful schemaless 接口写入 (由 taosAdapter 提供)。默认值为 taosc |
| -I/--interface \<insertMode> | 插入模式,可选项有 taosc、rest、stmt、sml、sml-rest分别对应普通写入、restful 接口写入、参数绑定接口写入、schemaless 接口写入、restful schemaless 接口写入 (由 taosAdapter 提供)。默认值为 taosc |
| -u/--user \<user> | 用于连接 TDengine 服务端的用户名,默认为 root |
| -U/--supplement-insert | 写入数据而不提前建数据库和表,默认关闭 |
| -p/--password \<passwd> | 用于连接 TDengine 服务端的密码,默认值为 taosdata |
@ -67,7 +67,7 @@ taosBenchmark -f <json file>
| -d/--database \<dbName> | 所使用的数据库的名称,默认值为 test |
| -b/--data-type \<colType> | 指定超级表普通列数据类型, 多个使用逗号分隔,默认值:"FLOAT,INT,FLOAT" 如:`taosBenchmark -b "FLOAT,BINARY(8),NCHAR(16)"`|
| -A/--tag-type \<tagType> | 指定超级表标签列数据类型,多个使用逗号分隔,默认值:"INT,BINARY(24)" 如:`taosBenchmark -A "INT,BINARY(8),NCHAR(8)"`|
| -l/--columns \<colNum> | 超级表的数据列的总数量。如果同时设置了该参数和 `-b/--data-type`,则最后的结果列数为两者取大。如果本参数指定的数量大于 `-b/--data-type` 指定的列数,则未指定的列类型默认为 INT 例如: `-l 5 -b float,double` 那么最后的列为 `FLOAT,DOUBLE,INT,INT,INT`。如果 columns 指定的数量小于或等于 `-b/--data-type` 指定的列数,则结果为 `-b/--data-type` 指定的列和类型,例如: `-l 3 -b float,double,float,bigint`,那么最后的列为 `FLOAT,DOUBLE,FLOAT,BIGINT` |
| -l/--columns \<colNum> | 超级表的数据列的总数量。如果同时设置了该参数和 `-b/--data-type`,则最后的结果列数为两者取大。如果本参数指定的数量大于 `-b/--data-type` 指定的列数,则未指定的列类型默认为 INT 例如: `-l 5 -b float,double` 那么最后的列为 `FLOAT,DOUBLE,INT,INT,INT`。如果 columns 指定的数量小于或等于 `-b/--data-type` 指定的列数,则结果为 `-b/--data-type` 指定的列和类型,例如`-l 3 -b float,double,float,bigint`,那么最后的列为 `FLOAT,DOUBLE,FLOAT,BIGINT` |
| -L/--partial-col-num \<colNum> | 指定某些列写入数据,其他列数据为 NULL。默认所有列都写入数据 |
| -w/--binwidth \<length> | nchar 和 binary 类型的默认长度,默认值为 64 |
| -m/--table-prefix \<tablePrefix> | 子表名称的前缀,默认值为 "d" |
@ -93,160 +93,160 @@ taosBenchmark -f <json file>
本节所列参数适用于所有功能模式。
- **filetype** : 功能分类,可选值为 `insert`, `query``subscribe`。分别对应插入、查询和订阅功能。每个配置文件中只能指定其中之一。
- **cfgdir** : TDengine 客户端配置文件所在的目录,默认路径是 /etc/taos 。
- **filetype**功能分类,可选值为 `insert`, `query``subscribe`。分别对应插入、查询和订阅功能。每个配置文件中只能指定其中之一。
- **cfgdir**TDengine 客户端配置文件所在的目录,默认路径是 /etc/taos 。
- **host** : 指定要连接的 TDengine 服务端的 FQDN默认值为 localhost 。
- **host**指定要连接的 TDengine 服务端的 FQDN默认值为 localhost 。
- **port** : 要连接的 TDengine 服务器的端口号,默认值为 6030 。
- **port**要连接的 TDengine 服务器的端口号,默认值为 6030 。
- **user** : 用于连接 TDengine 服务端的用户名,默认为 root 。
- **user**用于连接 TDengine 服务端的用户名,默认为 root 。
- **password** : 用于连接 TDengine 服务端的密码,默认值为 taosdata。
- **password**用于连接 TDengine 服务端的密码,默认值为 taosdata。
### 写入配置参数
写入场景下 `filetype` 必须设置为 `insert`,该参数及其它通用参数详见 [通用配置参数](#通用配置参数)
- **keep_trying** : 失败后进行重试的次数,默认不重试。需使用 v3.0.9 以上版本。
- **keep_trying**失败后进行重试的次数,默认不重试。需使用 v3.0.9 以上版本。
- **trying_interval** : 失败重试间隔时间,单位为毫秒,仅在 keep_trying 指定重试后有效。需使用 v3.0.9 以上版本。
- **childtable_from 和 childtable_to** : 指定写入子表范围,开闭区间为 [childtable_from, childtable_to) 。
- **trying_interval**失败重试间隔时间,单位为毫秒,仅在 keep_trying 指定重试后有效。需使用 v3.0.9 以上版本。
- **childtable_from 和 childtable_to**指定写入子表范围,开闭区间为 [childtable_from, childtable_to) 。
 
- **continue_if_fail** : 允许用户定义失败后行为。
- **continue_if_fail**允许用户定义失败后行为。
“continue_if_fail”:  “no”, 失败 taosBenchmark 自动退出,默认行为。
“continue_if_fail”: “yes”, 失败 taosBenchmark 警告用户,并继续写入。
“continue_if_fail”: “smart”, 如果子表不存在失败taosBenchmark 会建立子表并继续写入。
“continue_if_fail”“no”, 失败 taosBenchmark 自动退出,默认行为。
“continue_if_fail”“yes”, 失败 taosBenchmark 警告用户,并继续写入。
“continue_if_fail”“smart”, 如果子表不存在失败taosBenchmark 会建立子表并继续写入。
#### 数据库相关
创建数据库时的相关参数在 json 配置文件中的 `dbinfo` 中配置,个别具体参数如下。其余参数均与 TDengine 中 `create database` 时所指定的数据库参数相对应,详见[../../taos-sql/database]
- **name** : 数据库名。
- **name**数据库名。
- **drop** : 数据库已存在时是否删除,可选项为 "yes" 或 "no", 默认为 “yes” 。
- **drop**数据库已存在时是否删除,可选项为 "yes" 或 "no", 默认为 “yes” 。
#### 超级表相关
创建超级表时的相关参数在 json 配置文件中的 `super_tables` 中配置,具体参数如下。
- **name**: 超级表名,必须配置,没有默认值。
- **name**超级表名,必须配置,没有默认值。
- **child_table_exists** : 子表是否已经存在,默认值为 "no",可选值为 "yes" 或 "no" 。
- **child_table_exists**子表是否已经存在,默认值为 "no",可选值为 "yes" 或 "no" 。
- **childtable_count** : 子表的数量,默认值为 10。
- **childtable_count**子表的数量,默认值为 10。
- **childtable_prefix** : 子表名称的前缀,必选配置项,没有默认值。
- **childtable_prefix**子表名称的前缀,必选配置项,没有默认值。
- **escape_character** : 超级表和子表名称中是否包含转义字符,默认值为 "no",可选值为 "yes" 或 "no" 。
- **escape_character**超级表和子表名称中是否包含转义字符,默认值为 "no",可选值为 "yes" 或 "no" 。
- **auto_create_table** : 仅当 insert_mode 为 taosc, rest, stmt 并且 child_table_exists 为 "no" 时生效,该参数为 "yes" 表示 taosBenchmark 在插入数据时会自动创建不存在的表;为 "no" 则表示先提前建好所有表再进行插入。
- **auto_create_table**仅当 insert_mode 为 taosc, rest, stmt 并且 child_table_exists 为 "no" 时生效,该参数为 "yes" 表示 taosBenchmark 在插入数据时会自动创建不存在的表;为 "no" 则表示先提前建好所有表再进行插入。
- **batch_create_tbl_num** : 创建子表时每批次的建表数量,默认为 10。注实际的批数不一定与该值相同当执行的 SQL 语句大于支持的最大长度时,会自动截断再执行,继续创建。
- **batch_create_tbl_num**创建子表时每批次的建表数量,默认为 10。注实际的批数不一定与该值相同当执行的 SQL 语句大于支持的最大长度时,会自动截断再执行,继续创建。
- **data_source** : 数据的来源,默认为 taosBenchmark 随机产生,可以配置为 "rand" 和 "sample"。为 "sample" 时使用 sample_file 参数指定的文件内的数据。
- **data_source**数据的来源,默认为 taosBenchmark 随机产生,可以配置为 "rand" 和 "sample"。为 "sample" 时使用 sample_file 参数指定的文件内的数据。
- **insert_mode** : 插入模式,可选项有 taosc, rest, stmt, sml, sml-rest, 分别对应普通写入、restful 接口写入、参数绑定接口写入、schemaless 接口写入、restful schemaless 接口写入 (由 taosAdapter 提供)。默认值为 taosc 。
- **insert_mode**插入模式,可选项有 taosc, rest, stmt, sml, sml-rest, 分别对应普通写入、restful 接口写入、参数绑定接口写入、schemaless 接口写入、restful schemaless 接口写入 (由 taosAdapter 提供)。默认值为 taosc 。
- **non_stop_mode** : 指定是否持续写入,若为 "yes" 则 insert_rows 失效,直到 Ctrl + C 停止程序,写入才会停止。默认值为 "no",即写入指定数量的记录后停止。注:即使在持续写入模式下 insert_rows 失效,但其也必须被配置为一个非零正整数。
- **non_stop_mode**指定是否持续写入,若为 "yes" 则 insert_rows 失效,直到 Ctrl + C 停止程序,写入才会停止。默认值为 "no",即写入指定数量的记录后停止。注:即使在持续写入模式下 insert_rows 失效,但其也必须被配置为一个非零正整数。
- **line_protocol** : 使用行协议插入数据,仅当 insert_mode 为 sml 或 sml-rest 时生效,可选项为 line, telnet, json 。
- **line_protocol**使用行协议插入数据,仅当 insert_mode 为 sml 或 sml-rest 时生效,可选项为 line, telnet, json 。
- **tcp_transfer** : telnet 模式下的通信协议,仅当 insert_mode 为 sml-rest 并且 line_protocol 为 telnet 时生效。如果不配置,则默认为 http 协议。
- **tcp_transfer**telnet 模式下的通信协议,仅当 insert_mode 为 sml-rest 并且 line_protocol 为 telnet 时生效。如果不配置,则默认为 http 协议。
- **insert_rows** : 每个子表插入的记录数,默认为 0 。
- **insert_rows**每个子表插入的记录数,默认为 0 。
- **childtable_offset** : 仅当 child_table_exists 为 yes 时生效,指定从超级表获取子表列表时的偏移量,即从第几个子表开始。
- **childtable_offset**仅当 child_table_exists 为 yes 时生效,指定从超级表获取子表列表时的偏移量,即从第几个子表开始。
- **childtable_limit** : 仅当 child_table_exists 为 yes 时生效,指定从超级表获取子表列表的上限。
- **childtable_limit**仅当 child_table_exists 为 yes 时生效,指定从超级表获取子表列表的上限。
- **interlace_rows** : 启用交错插入模式并同时指定向每个子表每次插入的数据行数。交错插入模式是指依次向每张子表插入由本参数所指定的行数并重复这个过程,直到所有子表的数据都插入完成。默认值为 0 即向一张子表完成数据插入后才会向下一张子表进行数据插入。
- **interlace_rows**启用交错插入模式并同时指定向每个子表每次插入的数据行数。交错插入模式是指依次向每张子表插入由本参数所指定的行数并重复这个过程,直到所有子表的数据都插入完成。默认值为 0 即向一张子表完成数据插入后才会向下一张子表进行数据插入。
- **insert_interval** : 指定交错插入模式的插入间隔,单位为 ms默认值为 0。 只有当 `-B/--interlace-rows` 大于 0 时才起作用。意味着数据插入线程在为每个子表插入隔行扫描记录后,会等待该值指定的时间间隔后再进行下一轮写入。
- **insert_interval**指定交错插入模式的插入间隔,单位为 ms默认值为 0。只有当 `-B/--interlace-rows` 大于 0 时才起作用。意味着数据插入线程在为每个子表插入隔行扫描记录后,会等待该值指定的时间间隔后再进行下一轮写入。
- **partial_col_num** : 若该值为正数 n 时, 则仅向前 n 列写入,仅当 insert_mode 为 taosc 和 rest 时生效,如果 n 为 0 则是向全部列写入。
- **partial_col_num**若该值为正数 n 时, 则仅向前 n 列写入,仅当 insert_mode 为 taosc 和 rest 时生效,如果 n 为 0 则是向全部列写入。
- **disorder_ratio** : 指定乱序数据的百分比概率,其值域为 [0,50]。默认为 0即没有乱序数据。
- **disorder_ratio**指定乱序数据的百分比概率,其值域为 [0,50]。默认为 0即没有乱序数据。
- **disorder_range** : 指定乱序数据的时间戳回退范围。所生成的乱序时间戳为非乱序情况下应该使用的时间戳减去这个范围内的一个随机值。仅在 `-O/--disorder` 指定的乱序数据百分比大于 0 时有效。
- **disorder_range**指定乱序数据的时间戳回退范围。所生成的乱序时间戳为非乱序情况下应该使用的时间戳减去这个范围内的一个随机值。仅在 `-O/--disorder` 指定的乱序数据百分比大于 0 时有效。
- **timestamp_step** : 每个子表中插入数据的时间戳步长,单位与数据库的 `precision` 一致,默认值是 1 。
- **timestamp_step**每个子表中插入数据的时间戳步长,单位与数据库的 `precision` 一致,默认值是 1 。
- **start_timestamp** : 每个子表的时间戳起始值,默认值是 now 。
- **start_timestamp**每个子表的时间戳起始值,默认值是 now 。
- **sample_format** : 样本数据文件的类型,现在只支持 "csv" 。
- **sample_format**样本数据文件的类型,现在只支持 "csv" 。
- **sample_file** : 指定 csv 格式的文件作为数据源,仅当 data_source 为 sample 时生效。若 csv 文件内的数据行数小于等于 prepared_rand那么会循环读取 csv 文件数据直到与 prepared_rand 相同;否则则会只读取 prepared_rand 个数的行的数据。也即最终生成的数据行数为二者取小。
- **sample_file**指定 csv 格式的文件作为数据源,仅当 data_source 为 sample 时生效。若 csv 文件内的数据行数小于等于 prepared_rand那么会循环读取 csv 文件数据直到与 prepared_rand 相同;否则则会只读取 prepared_rand 个数的行的数据。也即最终生成的数据行数为二者取小。
- **use_sample_ts** : 仅当 data_source 为 sample 时生效,表示 sample_file 指定的 csv 文件内是否包含第一列时间戳,默认为 no。 若设置为 yes 则使用 csv 文件第一列作为时间戳,由于同一子表时间戳不能重复,生成的数据量取决于 csv 文件内的数据行数相同,此时 insert_rows 失效。
- **use_sample_ts**仅当 data_source 为 sample 时生效,表示 sample_file 指定的 csv 文件内是否包含第一列时间戳,默认为 no。若设置为 yes 则使用 csv 文件第一列作为时间戳,由于同一子表时间戳不能重复,生成的数据量取决于 csv 文件内的数据行数相同,此时 insert_rows 失效。
- **tags_file** : 仅当 insert_mode 为 taosc, rest 的模式下生效。 最终的 tag 的数值与 childtable_count 有关,如果 csv 文件内的 tag 数据行小于给定的子表数量,那么会循环读取 csv 文件数据直到生成 childtable_count 指定的子表数量;否则则只会读取 childtable_count 行 tag 数据。也即最终生成的子表数量为二者取小。
- **tags_file**仅当 insert_mode 为 taosc, rest 的模式下生效。最终的 tag 的数值与 childtable_count 有关,如果 csv 文件内的 tag 数据行小于给定的子表数量,那么会循环读取 csv 文件数据直到生成 childtable_count 指定的子表数量;否则则只会读取 childtable_count 行 tag 数据。也即最终生成的子表数量为二者取小。
- **primary_key** : 指定超级表是否有复合主键,取值 1 和 0 复合主键列只能是超级表的第二列,指定生成复合主键后要确保第二列符合复合主键的数据类型,否则会报错。
- **repeat_ts_min** : 数值类型,复合主键开启情况下指定生成相同时间戳记录的最小个数,生成相同时间戳记录的个数是在范围[repeat_ts_min, repeat_ts_max] 内的随机值, 最小值等于最大值时为固定个数。
- **repeat_ts_max** : 数值类型,复合主键开启情况下指定生成相同时间戳记录的最大个数。
- **sqls** : 字符串数组类型,指定超级表创建成功后要执行的 sql 数组sql 中指定表名前面要带数据库名,否则会报未指定数据库错误。
- **primary_key**指定超级表是否有复合主键,取值 1 和 0 复合主键列只能是超级表的第二列,指定生成复合主键后要确保第二列符合复合主键的数据类型,否则会报错。
- **repeat_ts_min**数值类型,复合主键开启情况下指定生成相同时间戳记录的最小个数,生成相同时间戳记录的个数是在范围[repeat_ts_min, repeat_ts_max] 内的随机值, 最小值等于最大值时为固定个数。
- **repeat_ts_max**数值类型,复合主键开启情况下指定生成相同时间戳记录的最大个数。
- **sqls**字符串数组类型,指定超级表创建成功后要执行的 sql 数组sql 中指定表名前面要带数据库名,否则会报未指定数据库错误。
#### 标签列与数据列
指定超级表标签列与数据列的配置参数分别在 `super_tables` 中的 `columns``tag` 中。
- **type** : 指定列类型,可选值请参考 TDengine 支持的数据类型。
- **type**指定列类型,可选值请参考 TDengine 支持的数据类型。
JSON 数据类型比较特殊,只能用于标签,当使用 JSON 类型作为 tag 时有且只能有这一个标签,此时 count 和 len 代表的意义分别是 JSON tag 内的 key-value pair 的个数和每个 KV pair 的 value 的值的长度value 默认为 string。
- **len** : 指定该数据类型的长度,对 NCHARBINARY 和 JSON 数据类型有效。如果对其他数据类型配置了该参数,若为 0 则代表该列始终都是以 null 值写入;如果不为 0 则被忽略。
- **len**指定该数据类型的长度,对 NCHARBINARY 和 JSON 数据类型有效。如果对其他数据类型配置了该参数,若为 0 则代表该列始终都是以 null 值写入;如果不为 0 则被忽略。
- **count** : 指定该类型列连续出现的数量,例如 "count": 4096 即可生成 4096 个指定类型的列。
- **count**:指定该类型列连续出现的数量,例如 "count"4096 即可生成 4096 个指定类型的列。
- **name** : 列的名字,若与 count 同时使用,比如 "name""current", "count":3, 则 3 个列的名字分别为 current, current_2. current_3。
- **name**:列的名字,若与 count 同时使用,比如 "name""current", "count"3, 则 3 个列的名字分别为 current、current_2、current_3。
- **min** : 数据类型的 列/标签 的最小值。生成的值将大于或等于最小值。
- **min**数据类型的 列/标签 的最小值。生成的值将大于或等于最小值。
- **max** : 数据类型的 列/标签 的最大值。生成的值将小于最大值。
- **max**数据类型的 列/标签 的最大值。生成的值将小于最大值。
- **scalingFactor** : 浮点数精度增强因子,仅当数据类型是 float/double 时生效,有效值范围为 1 至 1000000 的正整数。用于增强生成浮点数的精度,特别是在 min 或 max 值较小的情况下。此属性按 10 的幂次增强小数点后的精度scalingFactor 为 10 表示增强 1 位小数精度100 表示增强 2 位,依此类推。
- **scalingFactor**浮点数精度增强因子,仅当数据类型是 float/double 时生效,有效值范围为 1 至 1000000 的正整数。用于增强生成浮点数的精度,特别是在 min 或 max 值较小的情况下。此属性按 10 的幂次增强小数点后的精度scalingFactor 为 10 表示增强 1 位小数精度100 表示增强 2 位,依此类推。
- **fun** : 此列数据以函数填充,目前只支持 sin 和 cos 两函数,输入参数为时间戳换算成角度值,换算公式: 角度 x = 输入的时间列ts值 % 360。同时支持系数调节随机波动因子调节以固定格式的表达式展现如 fun=“10\*sin(x)+100\*random(5)” , x 表示角度,取值 0 ~ 360度增长步长与时间列步长一致。10 表示乘的系数100 表示加或减的系数5 表示波动幅度在 5% 的随机范围内。目前支持的数据类型为 int, bigint, float, double 四种数据类型。注意:表达式为固定模式,不可前后颠倒。
- **fun**此列数据以函数填充,目前只支持 sin 和 cos 两函数,输入参数为时间戳换算成角度值,换算公式:角度 x = 输入的时间列ts值 % 360。同时支持系数调节随机波动因子调节以固定格式的表达式展现如 fun=“10\*sin(x)+100\*random(5)” , x 表示角度,取值 0 ~ 360度增长步长与时间列步长一致。10 表示乘的系数100 表示加或减的系数5 表示波动幅度在 5% 的随机范围内。目前支持的数据类型为 int, bigint, float, double 四种数据类型。注意:表达式为固定模式,不可前后颠倒。
- **values** : nchar/binary 列/标签的值域,将从值中随机选择。
- **values**nchar/binary 列/标签的值域,将从值中随机选择。
- **sma**: 将该列加入 SMA 中,值为 "yes" 或者 "no",默认为 "no" 。
- **sma**将该列加入 SMA 中,值为 "yes" 或者 "no",默认为 "no" 。
- **encode**: 字符串类型,指定此列两级压缩中的第一级编码算法,详细参见创建超级表。
- **encode**字符串类型,指定此列两级压缩中的第一级编码算法,详细参见创建超级表。
- **compress**: 字符串类型,指定此列两级压缩中的第二级加密算法,详细参见创建超级表。
- **compress**字符串类型,指定此列两级压缩中的第二级加密算法,详细参见创建超级表。
- **level**: 字符串类型,指定此列两级压缩中的第二级加密算法的压缩率高低,详细参见创建超级表。
- **level**字符串类型,指定此列两级压缩中的第二级加密算法的压缩率高低,详细参见创建超级表。
- **gen**: 字符串类型,指定此列生成数据的方式,不指定为随机,若指定为 “order”, 会按自然数顺序增长。
- **gen**字符串类型,指定此列生成数据的方式,不指定为随机,若指定为 “order”, 会按自然数顺序增长。
- **fillNull**: 字符串类型,指定此列是否随机插入 NULL 值,可指定为 “true” 或 "false", 只有当 generate_row_rule 为 2 时有效。
- **fillNull**字符串类型,指定此列是否随机插入 NULL 值,可指定为 “true” 或 "false", 只有当 generate_row_rule 为 2 时有效。
#### 写入行为相关
- **thread_count** : 插入数据的线程数量,默认为 8。
- **thread_count**插入数据的线程数量,默认为 8。
- **thread_bind_vgroup** : 写入时 vgroup 是否和写入线程绑定,绑定后可提升写入速度, 取值为 "yes" 或 "no",默认值为 “no”, 设置为 “no” 后与原来行为一致。 当设为 “yes” 时,如果 thread_count 大于写入数据库 vgroups 数量, thread_count 自动调整为 vgroups 数量;如果 thread_count 小于 vgroups 数量,写入线程数量不做调整,一个线程写完一个 vgroup 数据后再写下一个,同时保持一个 vgroup 同时只能由一个线程写入的规则。
- **thread_bind_vgroup**写入时 vgroup 是否和写入线程绑定,绑定后可提升写入速度, 取值为 "yes" 或 "no",默认值为 “no”, 设置为 “no” 后与原来行为一致。当设为 “yes” 时,如果 thread_count 大于写入数据库 vgroups 数量, thread_count 自动调整为 vgroups 数量;如果 thread_count 小于 vgroups 数量,写入线程数量不做调整,一个线程写完一个 vgroup 数据后再写下一个,同时保持一个 vgroup 同时只能由一个线程写入的规则。
- **create_table_thread_count** : 建表的线程数量,默认为 8。
- **create_table_thread_count**建表的线程数量,默认为 8。
- **result_file** : 结果输出文件的路径,默认值为 ./output.txt 。
- **result_file**结果输出文件的路径,默认值为 ./output.txt 。
- **confirm_parameter_prompt** : 开关参数,要求用户在提示后确认才能继续, 可取值 "yes" or "no"。默认值为 "no" 。
- **confirm_parameter_prompt**开关参数,要求用户在提示后确认才能继续, 可取值 "yes" or "no"。默认值为 "no" 。
- **interlace_rows** : 启用交错插入模式并同时指定向每个子表每次插入的数据行数。交错插入模式是指依次向每张子表插入由本参数所指定的行数并重复这个过程,直到所有子表的数据都插入完成。默认值为 0 即向一张子表完成数据插入后才会向下一张子表进行数据插入。
- **interlace_rows**启用交错插入模式并同时指定向每个子表每次插入的数据行数。交错插入模式是指依次向每张子表插入由本参数所指定的行数并重复这个过程,直到所有子表的数据都插入完成。默认值为 0 即向一张子表完成数据插入后才会向下一张子表进行数据插入。
`super_tables` 中也可以配置该参数,若配置则以 `super_tables` 中的配置为高优先级,覆盖全局设置。
- **insert_interval** :
- **insert_interval**
指定交错插入模式的插入间隔,单位为 ms默认值为 0。只有当 `-B/--interlace-rows` 大于 0 时才起作用。意味着数据插入线程在为每个子表插入隔行扫描记录后,会等待该值指定的时间间隔后再进行下一轮写入。
`super_tables` 中也可以配置该参数,若配置则以 `super_tables` 中的配置为高优先级,覆盖全局设置。
- **num_of_records_per_req** :
- **num_of_records_per_req**
每次向 TDengine 请求写入的数据行数,默认值为 30000 。当其设置过大时TDengine 客户端驱动会返回相应的错误信息,此时需要调低这个参数的设置以满足写入要求。
- **prepare_rand** : 生成的随机数据中唯一值的数量。若为 1 则表示所有数据都相同。默认值为 10000 。
- **prepare_rand**生成的随机数据中唯一值的数量。若为 1 则表示所有数据都相同。默认值为 10000 。
- **pre_load_tb_meta**:是否提前加载子表的 meta 数据,取值为 “yes” or "no"。当子表数量非常多时,打开此选项可提高写入速度。
@ -264,38 +264,38 @@ interval 控制休眠时间,避免持续查询慢查询消耗 CPU ,单位为
查询指定表(可以指定超级表、子表或普通表)的配置参数在 `specified_table_query` 中设置。
- **mixed_query** : 查询模式
“yes” :`混合查询`
"no"(默认值) :`普通查询`
- **mixed_query**查询模式
“yes”`混合查询`
"no"(默认值)`普通查询`
`普通查询``sqls` 中每个 sql 启动 `threads` 个线程查询此 sql, 执行完 `query_times` 次查询后退出,执行此 sql 的所有线程都完成后进入下一个 sql
`查询总次数` = `sqls` 个数 * `query_times` * `threads`
`混合查询``sqls` 中所有 sql 分成 `threads` 个组,每个线程执行一组, 每个 sql 都需执行 `query_times` 次查询
`查询总次数` = `sqls` 个数 * `query_times`
- **query_interval** : 查询时间间隔,单位: millisecond默认值为 0。
- **query_interval**:查询时间间隔,单位:millisecond默认值为 0。
- **threads** : 执行查询 SQL 的线程数,默认值为 1。
- **threads**执行查询 SQL 的线程数,默认值为 1。
- **sqls**
- **sql**: 执行的 SQL 命令,必填。
- **result**: 保存查询结果的文件,未指定则不保存。
- **sql**执行的 SQL 命令,必填。
- **result**保存查询结果的文件,未指定则不保存。
#### 查询超级表
查询超级表的配置参数在 `super_table_query` 中设置。
超级表查询的线程模式与上面介绍的指定查询语句查询的 `正常查询` 模式相同,不同之处是本 `sqls` 使用所有子表填充。
- **stblname** : 指定要查询的超级表的名称,必填。
- **stblname**指定要查询的超级表的名称,必填。
- **query_interval** : 查询时间间隔,单位是秒,默认值为 0。
- **query_interval**查询时间间隔,单位是秒,默认值为 0。
- **threads** : 执行查询 SQL 的线程数,默认值为 1。
- **threads**执行查询 SQL 的线程数,默认值为 1。
- **sqls**
- **sql** : 执行的 SQL 命令,必填;对于超级表的查询 SQL在 SQL 命令中必须保留 "xxxx",会替换为超级下所有子表名后再执行。
- **result** : 保存查询结果的文件,未指定则不保存。
- **限制项** : sqls 下配置 sql 数组最大为 100 个。
- **sql**执行的 SQL 命令,必填;对于超级表的查询 SQL在 SQL 命令中必须保留 "xxxx",会替换为超级下所有子表名后再执行。
- **result**保存查询结果的文件,未指定则不保存。
- **限制项**sqls 下配置 sql 数组最大为 100 个。
### 订阅配置参数
@ -303,14 +303,14 @@ interval 控制休眠时间,避免持续查询慢查询消耗 CPU ,单位为
订阅配置参数在 `tmq_info` 项下设置,参数如下:
- **concurrent** : 消费订阅的消费者数量或称并发消费数量默认值1。
- **create_mode** : 创建消费者模式,可取值 sequential顺序创建 parallel并发同时创建必填项无默认值。
- **group_mode** : 生成消费者 groupId 模式,可取值 share所有消费者只生成一个 groupId independent每个消费者生成一个独立的 groupId如果 `group.id` 未设置,此项为必填项,无默认值。
- **poll_delay** : 调用 tmq_consumer_poll 传入的轮询超时时间,单位为毫秒,负数表示默认超时 1 秒。
- **enable.manual.commit** : 是否允许手动提交,可取值 true允许手动提交每次消费完消息后手动调用 tmq_commit_sync 完成提交, false不进行提交默认值: false。
- **rows_file** : 存储消费数据的文件,可以为全路径或相对路径,带文件名。实际保存的文件会在后面加上消费者序号,如 rows_file 为 result, 实际文件名为 result_1消费者 1 result_2消费者 2 ...
- **expect_rows** : 期望每个消费者消费的行数,数据类型,当消费达到这个数,消费会退出,不设置会一直消费。
- **topic_list** : 指定消费的 topic 列表数组类型。topic 列表格式示例: `{"name": "topic1", "sql": "select * from test.meters;"}` name指定 topic 名sql指定创建 topic 的 sql 语句,需保证 sql 正确,框架会自动创建出 topic。
- **concurrent**消费订阅的消费者数量或称并发消费数量默认值1。
- **create_mode**创建消费者模式,可取值 sequential顺序创建 parallel并发同时创建必填项无默认值。
- **group_mode**生成消费者 groupId 模式,可取值 share所有消费者只生成一个 groupId independent每个消费者生成一个独立的 groupId如果 `group.id` 未设置,此项为必填项,无默认值。
- **poll_delay**调用 tmq_consumer_poll 传入的轮询超时时间,单位为毫秒,负数表示默认超时 1 秒。
- **enable.manual.commit**是否允许手动提交,可取值 true允许手动提交每次消费完消息后手动调用 tmq_commit_sync 完成提交, false不进行提交默认值false。
- **rows_file**存储消费数据的文件,可以为全路径或相对路径,带文件名。实际保存的文件会在后面加上消费者序号,如 rows_file 为 result, 实际文件名为 result_1消费者 1 result_2消费者 2 ...
- **expect_rows**期望每个消费者消费的行数,数据类型,当消费达到这个数,消费会退出,不设置会一直消费。
- **topic_list**指定消费的 topic 列表数组类型。topic 列表格式示例:`{"name": "topic1", "sql": "select * from test.meters;"}`name指定 topic 名sql指定创建 topic 的 sql 语句,需保证 sql 正确,框架会自动创建出 topic。
以下参数透传订阅属性,参见 [订阅创建参数](../../../develop/tmq/#创建参数) 说明:
- **client.id**
@ -319,7 +319,7 @@ interval 控制休眠时间,避免持续查询慢查询消耗 CPU ,单位为
- **enable.auto.commit**
- **msg.with.table.name**
- **auto.commit.interval.ms**
- **group.id** : 若此值不指定,将由 `group_mode` 指定规则生成 groupId若指定此值`group_mode` 参数不再有效。
- **group.id**若此值不指定,将由 `group_mode` 指定规则生成 groupId若指定此值`group_mode` 参数不再有效。
### 数据类型对照表
@ -395,18 +395,18 @@ SUCC: Spent 8.527298 (real 8.117379) seconds to insert rows: 10000000 with 8 thr
SUCC: insert delay, min: 19.6780ms, avg: 64.9390ms, p90: 94.6900ms, p95: 105.1870ms, p99: 130.6660ms, max: 157.0830ms
```
第一行写入速度统计:
- Spent: 写入总耗时,单位秒,从开始写入第一个数据开始计时到最后一条数据结束,这里表示共花了 8.527298 秒。
- real : 写入总耗时(调用引擎),此耗时已抛去测试框架准备数据时间,纯统计在引擎调用上花费的时间,示例为 8.117379 秒8.527298 - 8.117379 = 0.409919 秒则为测试框架准备数据消耗时间
- rows : 写入总行数,为 1000 万条数据。
- threads: 写入线程数,这里是 8 个线程同时写入。
- Spent写入总耗时,单位秒,从开始写入第一个数据开始计时到最后一条数据结束,这里表示共花了 8.527298 秒。
- real写入总耗时(调用引擎),此耗时已抛去测试框架准备数据时间,纯统计在引擎调用上花费的时间,示例为 8.117379 秒8.527298 - 8.117379 = 0.409919 秒则为测试框架准备数据消耗时间
- rows写入总行数,为 1000 万条数据。
- threads写入线程数,这里是 8 个线程同时写入。
- records/second 写入速度 = `写入总耗时`/ `写入总行数` 括号中 `real` 同前,表示纯引擎写入速度。
第二行单个写入延时统计:
- min : 写入最小延时。
- avg : 写入平时延时。
- p90 : 写入延时 p90 百分位上的延时数。
- p95 : 写入延时 p95 百分位上的延时数。
- p99 : 写入延时 p99 百分位上的延时数。
- max : 写入最大延时。
- min写入最小延时。
- avg写入平时延时。
- p90写入延时 p90 百分位上的延时数。
- p95写入延时 p95 百分位上的延时数。
- p99写入延时 p99 百分位上的延时数。
- max写入最大延时。
通过此系列指标,可观察到写入请求延时分布情况。
#### 查询指标

View File

@ -25,7 +25,7 @@ CREATE DATABASE db_name PRECISION 'ns';
在 TDengine 中,普通表的数据模型中可使用以下数据类型。
| # | **类型** | **Bytes** | **说明** |
| --- | :---------------: | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| --- | :---------------: | --------- | ---------------------- |
| 1 | TIMESTAMP | 8 | 时间戳。缺省精度毫秒,可支持微秒和纳秒,详细说明见上节。|
| 2 | INT | 4 | 整型,范围 [-2^31, 2^31-1] |
| 3 | INT UNSIGNED | 4 | 无符号整数,[0, 2^32-1] |
@ -59,7 +59,7 @@ CREATE DATABASE db_name PRECISION 'ns';
| 3 | POLYGON((1.0 1.0, 2.0 2.0, 1.0 1.0)) | 13+3*16 | 13+4094*16 | +16 |
- SQL 语句中的数值类型将依据是否存在小数点或使用科学计数法表示来判断数值类型是否为整型或者浮点型因此在使用时要注意相应类型越界的情况。例如9999999999999999999 会认为超过长整型的上边界而溢出,而 9999999999999999999.0 会被认为是有效的浮点数。
- VARBINARY 是一种存储二进制数据的数据类型,最大长度为 65,517 字节,标签列最大长度为 16,382 字节。可以通过sql或schemaless方式写入二进制数据需要转换为\x开头的字符串写入也可以通过stmt方式写入可以直接使用二进制。显示时通过16进制\x开头。
- VARBINARY 是一种存储二进制数据的数据类型,最大长度为 65,517 字节,标签列最大长度为 16,382 字节。可以通过sql或schemaless方式写入二进制数据需要转换为 `\x` 开头的字符串写入),也可以通过 stmt 方式写入可以直接使用二进制。显示时通过16进制\x开头。
:::
@ -68,7 +68,7 @@ CREATE DATABASE db_name PRECISION 'ns';
TDengine 支持多个类型的常量,细节如下表:
| # | **语法** | **类型** | **说明** |
| --- | :-----------------------------------------------: | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| --- | :-----------------------------------------------: | --------- | -------------------------------------------------------------------------------- |
| 1 | [\{+ \| -}]123 | BIGINT | 整型数值的字面量的类型均为 BIGINT。如果用户输入超过了 BIGINT 的表示范围TDengine 按 BIGINT 对数值进行截断。 |
| 2 | 123.45 | DOUBLE | 浮点数值的字面量的类型均为 DOUBLE。TDengine 依据是否存在小数点,或使用科学计数法表示,来判断数值类型是否为整型或者浮点型。|
| 3 | 1.2E3 | DOUBLE | 科学计数法的字面量的类型为 DOUBLE。|

View File

@ -46,13 +46,13 @@ database_option: {
### 参数说明
- VGROUPS数据库中初始 vgroup 的数目。
- PRECISION数据库的时间戳精度。ms 表示毫秒us 表示微秒ns 表示纳秒,默认 ms 毫秒。
- PRECISION数据库的时间戳精度。ms 表示毫秒、us 表示微秒、ns 表示纳秒、默认 ms 毫秒。
- REPLICA表示数据库副本数取值为 1、2 或 3默认为 1; 2 仅在企业版 3.3.0.0 及以后版本中可用。在集群中使用,副本数必须小于或等于 DNODE 的数目。且使用时存在以下限制:
- 暂不支持对双副本数据库相关 Vgroup 进行 SPLITE VGROUP 或 REDISTRIBUTE VGROUP 操作
- 单副本数据库可变更为双副本数据库,但不支持从双副本变更为其它副本数,也不支持从三副本变更为双副本
- BUFFER: 一个 VNODE 写入内存池大小,单位为 MB默认为 256最小为 3最大为 16384。
- PAGES一个 VNODE 中元数据存储引擎的缓存页个数,默认为 256最小 64。一个 VNODE 元数据存储占用 PAGESIZE \* PAGES默认情况下为 1MB 内存。
- PAGESIZE一个 VNODE 中元数据存储引擎的页大小,单位为 KB默认为 4 KB。范围为 1 到 16384即 1 KB 到 16 MB。
- BUFFER:一个 vnode 写入内存池大小,单位为 MB默认为 256最小为 3最大为 16384。
- PAGES一个 vnode 中元数据存储引擎的缓存页个数,默认为 256最小 64。一个 vnode 元数据存储占用 PAGESIZE \* PAGES默认情况下为 1MB 内存。
- PAGESIZE一个 vnode 中元数据存储引擎的页大小,单位为 KB默认为 4 KB。范围为 1 到 16384即 1 KB 到 16 MB。
- CACHEMODEL表示是否在内存中缓存子表的最近数据。默认为 none。
- none表示不缓存。
- last_row表示缓存子表最近一行数据。这将显著改善 LAST_ROW 函数的性能表现。
@ -76,17 +76,17 @@ database_option: {
- 1表示只可以创建一张超级表。
- TABLE_PREFIX当其为正值时在决定把一个表分配到哪个 vgroup 时要忽略表名中指定长度的前缀;当其为负值时,在决定把一个表分配到哪个 vgroup 时只使用表名中指定长度的前缀;例如,假定表名为 "v30001",当 TSDB_PREFIX = 2 时 使用 "0001" 来决定分配到哪个 vgroup ,当 TSDB_PREFIX = -2 时使用 "v3" 来决定分配到哪个 vgroup
- TABLE_SUFFIX当其为正值时在决定把一个表分配到哪个 vgroup 时要忽略表名中指定长度的后缀;当其为负值时,在决定把一个表分配到哪个 vgroup 时只使用表名中指定长度的后缀;例如,假定表名为 "v30001",当 TSDB_SUFFIX = 2 时 使用 "v300" 来决定分配到哪个 vgroup ,当 TSDB_SUFFIX = -2 时使用 "01" 来决定分配到哪个 vgroup。
- TSDB_PAGESIZE一个 VNODE 中时序数据存储引擎的页大小,单位为 KB默认为 4 KB。范围为 1 到 16384即 1 KB到 16 MB。
- DNODES指定 VNODE 所在的 DNODE 列表,如 '1,2,3',以逗号区分且字符间不能有空格,仅企业版支持。
- TSDB_PAGESIZE一个 vnode 中时序数据存储引擎的页大小,单位为 KB默认为 4 KB。范围为 1 到 16384即 1 KB到 16 MB。
- DNODES指定 vnode 所在的 DNODE 列表,如 '1,2,3',以逗号区分且字符间不能有空格,仅企业版支持。
- WAL_LEVELWAL 级别,默认为 1。
- 1写 WAL但不执行 fsync。
- 2写 WAL而且执行 fsync。
- WAL_FSYNC_PERIOD当 WAL_LEVEL 参数设置为 2 时,用于设置落盘的周期。默认为 3000单位毫秒。最小为 0表示每次写入立即落盘最大为 180000即三分钟。
- WAL_RETENTION_PERIOD: 为了数据订阅消费,需要 WAL 日志文件额外保留的最大时长策略。WAL 日志清理,不受订阅客户端消费状态影响。单位为 s。默认为 3600表示在 WAL 保留最近 3600 秒的数据,请根据数据订阅的需要修改这个参数为适当值。
- WAL_RETENTION_PERIOD为了数据订阅消费,需要 WAL 日志文件额外保留的最大时长策略。WAL 日志清理,不受订阅客户端消费状态影响。单位为 s。默认为 3600表示在 WAL 保留最近 3600 秒的数据,请根据数据订阅的需要修改这个参数为适当值。
- WAL_RETENTION_SIZE为了数据订阅消费需要 WAL 日志文件额外保留的最大累计大小策略。单位为 KB。默认为 0表示累计大小无上限。
- COMPACT_INTERVAL自动 compact 触发周期(从 1970-01-01T00:00:00Z 开始切分的时间周期)。取值范围0 或 [10m, keep2]单位m分钟h小时d。不加时间单位默认单位为天默认值为 0即不触发自动 compact 功能。如果 db 中有未完成的 compact 任务,不重复下发 compact 任务。仅企业版 3.3.5.0 版本开始支持。
- COMPACT_TIME_RANGE自动 compact 任务触发的 compact 时间范围,取值范围:[-keep2, -duration]单位m分钟h小时d。不加时间单位时默认单位为天默认值为 [0, 0]。取默认值 [0, 0] 时,如果 COMPACT_INTERVAL 大于 0会按照 [-keep2, -duration] 下发自动 compact。因此要关闭自动 compact 功能,需要将 COMPACT_INTERVAL 设置为 0。仅企业版 3.3.5.0 版本开始支持。
- COMPACT_TIME_OFFSET自动 compact 任务触发的 compact 时间相对本地时间的偏移量。取值范围:[0,23],单位: h小时默认值为 0。以 UTC 0 时区为例,如果 COMPACT_INTERVAL 为 1d当 COMPACT_TIME_OFFSET 为 0 时,在每天 0 点下发自动 compact如果 COMPACT_TIME_OFFSET 为 2在每天 2 点下发自动 compact。仅企业版 3.3.5.0 版本开始支持。
- COMPACT_TIME_OFFSET自动 compact 任务触发的 compact 时间相对本地时间的偏移量。取值范围:[0, 23],单位:h小时默认值为 0。以 UTC 0 时区为例,如果 COMPACT_INTERVAL 为 1d当 COMPACT_TIME_OFFSET 为 0 时,在每天 0 点下发自动 compact如果 COMPACT_TIME_OFFSET 为 2在每天 2 点下发自动 compact。仅企业版 3.3.5.0 版本开始支持。
-
### 创建数据库示例

View File

@ -100,10 +100,10 @@ Hints 是用户控制单个语句查询优化的一种手段,当 Hint 不适
| :-----------: | -------------- | -------------------------- | -----------------------------|
| BATCH_SCAN | 无 | 采用批量读表的方式 | 超级表 JOIN 语句 |
| NO_BATCH_SCAN | 无 | 采用顺序读表的方式 | 超级表 JOIN 语句 |
| SORT_FOR_GROUP| 无 | 采用sort方式进行分组, 与PARTITION_FIRST冲突 | partition by 列表有普通列时 |
| PARTITION_FIRST| 无 | 在聚合之前使用PARTITION计算分组, 与SORT_FOR_GROUP冲突 | partition by 列表有普通列时 |
| PARA_TABLES_SORT| 无 | 超级表的数据按时间戳排序时, 不使用临时磁盘空间, 只使用内存。当子表数量多, 行长比较大时候, 会使用大量内存, 可能发生OOM | 超级表的数据按时间戳排序时 |
| SMALLDATA_TS_SORT| 无 | 超级表的数据按时间戳排序时, 查询列长度大于等于256, 但是行数不多, 使用这个提示, 可以提高性能 | 超级表的数据按时间戳排序时 |
| SORT_FOR_GROUP| 无 | 采用 sort 方式进行分组,与 PARTITION_FIRST 冲突 | partition by 列表有普通列时 |
| PARTITION_FIRST| 无 | 在聚合之前使用 PARTITION 计算分组,与 SORT_FOR_GROUP 冲突 | partition by 列表有普通列时 |
| PARA_TABLES_SORT| 无 | 超级表的数据按时间戳排序时,不使用临时磁盘空间,只使用内存。当子表数量多,行长比较大时候,会使用大量内存,可能发生 OOM | 超级表的数据按时间戳排序时 |
| SMALLDATA_TS_SORT| 无 | 超级表的数据按时间戳排序时,查询列长度大于等于 256但是行数不多使用这个提示可以提高性能 | 超级表的数据按时间戳排序时 |
| SKIP_TSMA | 无 | 用于显示的禁用 TSMA 查询优化 | 带 Agg 函数的查询语句 |
举例:
@ -322,13 +322,13 @@ NULLS 语法用来指定 NULL 值在排序中输出的位置。NULLS LAST 是升
## LIMIT
LIMIT 控制输出条数OFFSET 指定从第几条之后开始输出。LIMIT/OFFSET 对结果集的执行顺序在 ORDER BY 之后。LIMIT 5 OFFSET 2 可以简写为 LIMIT 2, 5都输出第 3 行到第 7 行数据。
LIMIT 控制输出条数OFFSET 指定从第几条之后开始输出。LIMIT/OFFSET 对结果集的执行顺序在 ORDER BY 之后。`LIMIT 5 OFFSET 2` 可以简写为 `LIMIT 2, 5`,都输出第 3 行到第 7 行数据。
在有 PARTITION BY/GROUP BY 子句时LIMIT 控制的是每个切分的分片中的输出,而不是总的结果集输出。
## SLIMIT
SLIMIT 和 PARTITION BY/GROUP BY 子句一起使用用来控制输出的分片的数量。SLIMIT 5 SOFFSET 2 可以简写为 SLIMIT 2, 5都表示输出第 3 个到第 7 个分片。
SLIMIT 和 PARTITION BY/GROUP BY 子句一起使用,用来控制输出的分片的数量。`SLIMIT 5 SOFFSET 2` 可以简写为 SLIMIT `2, 5`,都表示输出第 3 个到第 7 个分片。
需要注意,如果有 ORDER BY 子句,则输出只有一个分片。
@ -485,8 +485,8 @@ SELECT ... FROM (SELECT ... FROM ...) ...;
- 内层查询的 ORDER BY 子句一般没有意义,建议避免这样的写法以免无谓的资源消耗。
- 与非嵌套的查询语句相比,外层查询所能支持的功能特性存在如下限制:
- 计算函数部分:
- 如果内层查询的结果数据未提供时间戳那么计算过程隐式依赖时间戳的函数在外层会无法正常工作。例如INTERP, DERIVATIVE, IRATE, LAST_ROW, FIRST, LAST, TWA, STATEDURATION, TAIL, UNIQUE。
- 如果内层查询的结果数据不是按时间戳有序那么计算过程依赖数据按时间有序的函数在外层会无法正常工作。例如LEASTSQUARES, ELAPSED, INTERP, DERIVATIVE, IRATE, TWA, DIFF, STATECOUNT, STATEDURATION, CSUM, MAVG, TAIL, UNIQUE。
- 如果内层查询的结果数据未提供时间戳那么计算过程隐式依赖时间戳的函数在外层会无法正常工作。例如INTERP、DERIVATIVE、IRATE、LAST_ROW、FIRST、LAST、TWA、STATEDURATION、TAIL、UNIQUE。
- 如果内层查询的结果数据不是按时间戳有序那么计算过程依赖数据按时间有序的函数在外层会无法正常工作。例如LEASTSQUARES、ELAPSED、INTERP、DERIVATIVE、IRATE、TWA、DIFF、STATECOUNT、STATEDURATION、CSUM、MAVG、TAIL、UNIQUE。
- 计算过程需要两遍扫描的函数在外层查询中无法正常工作。例如此类函数包括PERCENTILE。
:::
@ -521,7 +521,7 @@ SELECT * FROM tb1 WHERE ts >= NOW - 1h;
SELECT * FROM tb1 WHERE ts > '2018-06-01 08:00:00.000' AND ts <= '2018-06-02 08:00:00.000' AND col3 LIKE '%nny' ORDER BY ts DESC;
```
查询 col1 与 col2 的和,并取名 complex, 时间大于 2018-06-01 08:00:00.000, col2 大于 1.2,结果输出仅仅 10 条记录,从第 5 条开始:
查询 col1 与 col2 的和,并取名 complex,时间大于 2018-06-01 08:00:00.000col2 大于 1.2,结果输出仅仅 10 条记录,从第 5 条开始:
```
SELECT (col1 + col2) AS 'complex' FROM tb1 WHERE ts > '2018-06-01 08:00:00.000' AND col2 > 1.2 LIMIT 10 OFFSET 5;

View File

@ -41,7 +41,7 @@ SHOW INDEXES FROM [db_name.]tbl_name;
## 使用说明
1. 索引使用得当能够提升数据过滤的效率,目前支持的过滤算子有 `=`, `>`, `>=`, `<`, `<=`。如果查询过滤条件中使用了这些算子,则索引能够明显提升查询效率。但如果查询过滤条件中使用的是其它算子,则索引起不到作用,查询效率没有变化。未来会逐步添加更多的算子。
1. 索引使用得当能够提升数据过滤的效率,目前支持的过滤算子有 `=`、`>`、`>=`、`<`、`<=`。如果查询过滤条件中使用了这些算子,则索引能够明显提升查询效率。但如果查询过滤条件中使用的是其它算子,则索引起不到作用,查询效率没有变化。未来会逐步添加更多的算子。
2. 针对一个 tag 列只能建立一个索引,如果重复创建索引则会报错。
@ -55,4 +55,4 @@ SHOW INDEXES FROM [db_name.]tbl_name;
7. 如果某个 tag 列的唯一值较少时,不建议对其建立索引,这种情况下收效甚微。
8. 新建立的超级表,会给第一列tag随机生成一个indexNewName, 生成规则是:tag0的name + 23个byte, 在系统表可以查,也可以按需要drop,行为和其他列tag 的索引一样
8. 新建立的超级表,会给第一列 tag随机生成一个indexNewName生成规则是tag0的name + 23个byte在系统表可以查,也可以按需要drop行为和其他列 tag 的索引一样

View File

@ -14,19 +14,19 @@ title: "删除数据"
DELETE FROM [ db_name. ] tb_name [WHERE condition];
```
**功能** 删除指定表或超级表中的数据记录
**功能**删除指定表或超级表中的数据记录
**参数**
**参数**
- `db_name` :可选参数,指定要删除表所在的数据库名,不填写则在当前数据库中
- `tb_name` :必填参数,指定要删除数据的表名,可以是普通表、子表,也可以是超级表。
- `condition`:可选参数,指定删除数据的过滤条件,不指定过滤条件则为表中所有数据,请慎重使用。特别说明,这里的 where 条件中只支持对第一列时间列的过滤。
**特别说明**
**特别说明**
数据删除后不可恢复,请慎重使用。为了确保删除的数据确实是自己要删除的,建议可以先使用 `select` 语句加 `where` 后的删除条件查看要删除的数据内容,确认无误后再执行 `delete` 命令。
**示例**
**示例**
`meters` 是一个超级表,`groupid` 是 int 类型的 tag 列,现在要删除 `meters` 表中时间小于 2021-10-01 10:40:00.100 的所有数据sql 如下:

File diff suppressed because it is too large Load Diff

View File

@ -54,9 +54,9 @@ window_clause: {
```
其中interval_val 和 sliding_val 都表示时间段interval_offset 表示窗口偏移量interval_offset 必须小于 interval_val语法上支持三种方式举例说明如下:
- INTERVAL(1s, 500a) SLIDING(1s), 自带时间单位的形式,其中的时间单位是单字符表示, 分别为: a (毫秒), b (纳秒), d (天), h (小时), m (分钟), n (月), s (秒), u (微秒), w (周), y (年).
- INTERVAL(1000, 500) SLIDING(1000), 不带时间单位的形式,将使用查询库的时间精度作为默认时间单位,当存在多个库时默认采用精度更高的库.
- INTERVAL('1s', '500a') SLIDING('1s'), 自带时间单位的字符串形式,字符串内部不能有任何空格等其它字符.
- `INTERVAL(1s, 500a) SLIDING(1s)` 自带时间单位的形式,其中的时间单位是单字符表示,分别为: a (毫秒)、b (纳秒)、d (天)、h (小时)、m (分钟)、n (月)、s (秒)、u (微秒)、w (周)、y (年)。
- `INTERVAL(1000, 500) SLIDING(1000)` 不带时间单位的形式,将使用查询库的时间精度作为默认时间单位,当存在多个库时默认采用精度更高的库
- `INTERVAL('1s', '500a') SLIDING('1s')` 自带时间单位的字符串形式,字符串内部不能有任何空格等其它字符。
### 窗口子句的规则
@ -76,19 +76,19 @@ window_clause: {
FILL 语句指定某一窗口区间数据缺失的情况下的填充模式。填充模式包括以下几种:
1. 不进行填充NONE默认填充模式
2. VALUE 填充:固定值填充,此时需要指定填充的数值。例如FILL(VALUE, 1.23)。这里需要注意,最终填充的值受由相应列的类型决定,如 FILL(VALUE, 1.23),相应列为 INT 类型,则填充值为 1, 若查询列表中有多列需要 FILL, 则需要给每一个 FILL 列指定 VALUE, 如 `SELECT _wstart, min(c1), max(c1) FROM ... FILL(VALUE, 0, 0)`, 注意, SELECT 表达式中只有包含普通列时才需要指定 FILL VALUE, 如 `_wstart`, `_wstart+1a`, `now`, `1+1` 以及使用 partition by 时的 partition key (如 tbname)都不需要指定 VALUE, `timediff(last(ts), _wstart)` 则需要指定VALUE。
3. PREV 填充:使用前一个非 NULL 值填充数据。例如FILL(PREV)。
4. NULL 填充:使用 NULL 填充数据。例如FILL(NULL)。
5. LINEAR 填充:根据前后距离最近的非 NULL 值做线性插值填充。例如FILL(LINEAR)。
6. NEXT 填充:使用下一个非 NULL 值填充数据。例如FILL(NEXT)。
2. VALUE 填充:固定值填充,此时需要指定填充的数值。例如 FILL(VALUE, 1.23)。这里需要注意,最终填充的值受由相应列的类型决定,如 FILL(VALUE, 1.23),相应列为 INT 类型,则填充值为 1,若查询列表中有多列需要 FILL则需要给每一个 FILL 列指定 VALUE`SELECT _wstart, min(c1), max(c1) FROM ... FILL(VALUE, 0, 0)`注意SELECT 表达式中只有包含普通列时才需要指定 FILL VALUE`_wstart`、`_wstart+1a`、`now`、`1+1` 以及使用 partition by 时的 partition key (如 tbname)都不需要指定 VALUE`timediff(last(ts), _wstart)` 则需要指定 VALUE。
3. PREV 填充:使用前一个非 NULL 值填充数据。例如 FILL(PREV)。
4. NULL 填充:使用 NULL 填充数据。例如 FILL(NULL)。
5. LINEAR 填充:根据前后距离最近的非 NULL 值做线性插值填充。例如 FILL(LINEAR)。
6. NEXT 填充:使用下一个非 NULL 值填充数据。例如 FILL(NEXT)。
以上填充模式中,除了 NONE 模式默认不填充值之外,其他模式在查询的整个时间范围内如果没有数据 FILL 子句将被忽略即不产生填充数据查询结果为空。这种行为在部分模式PREV、NEXT、LINEAR下具有合理性因为在这些模式下没有数据意味着无法产生填充数值。而对另外一些模式NULL、VALUE来说理论上是可以产生填充数值的至于需不需要输出填充数值取决于应用的需求。所以为了满足这类需要强制填充数据或 NULL 的应用的需求,同时不破坏现有填充模式的行为兼容性,从 3.0.3.0 版本开始,增加了两种新的填充模式:
以上填充模式中,除了 NONE 模式默认不填充值之外,其他模式在查询的整个时间范围内如果没有数据 FILL 子句将被忽略即不产生填充数据查询结果为空。这种行为在部分模式PREV、NEXT、LINEAR下具有合理性因为在这些模式下没有数据意味着无法产生填充数值。而对另外一些模式NULL、VALUE来说理论上是可以产生填充数值的至于需不需要输出填充数值取决于应用的需求。所以为了满足这类需要强制填充数据或 NULL 的应用的需求,同时不破坏现有填充模式的行为兼容性,从 v3.0.3.0 开始,增加了两种新的填充模式:
7. NULL_F: 强制填充 NULL 值
8. VALUE_F: 强制填充 VALUE 值
7. NULL_F强制填充 NULL 值
8. VALUE_F强制填充 VALUE 值
NULL, NULL_F, VALUE, VALUE_F 这几种填充模式针对不同场景区别如下:
- INTERVAL 子句: NULL_F, VALUE_F 为强制填充模式NULL, VALUE 为非强制模式。在这种模式下下各自的语义与名称相符
NULL、NULL_F、VALUE、 VALUE_F 这几种填充模式针对不同场景区别如下:
- INTERVAL 子句:NULL_F、VALUE_F 为强制填充模式NULL、VALUE 为非强制模式。在这种模式下下各自的语义与名称相符
- 流计算中的 INTERVAL 子句NULL_F 与 NULL 行为相同均为非强制模式VALUE_F 与 VALUE 行为相同,均为非强制模式。即流计算中的 INTERVAL 没有强制模式
- INTERP 子句NULL 与 NULL_F 行为相同均为强制模式VALUE 与 VALUE_F 行为相同,均为强制模式。即 INTERP 中没有非强制模式。
@ -139,7 +139,7 @@ SELECT COUNT(*) FROM meters WHERE _rowts - voltage > 1000000;
- 使用 INTERVAL 语句时,除非极特殊的情况,都要求把客户端和服务端的 taos.cfg 配置文件中的 timezone 参数配置为相同的取值,以避免时间处理函数频繁进行跨时区转换而导致的严重性能影响。
- 返回的结果中时间序列严格单调递增。
- 使用 AUTO 作为窗口偏移量时,如果 WHERE 时间条件比较复杂,比如多个 AND/OR/IN 互相组合,那么 AUTO 可能不生效,这种情况可以通过手动指定窗口偏移量进行解决。
- 使用 AUTO 作为窗口偏移量时,如果窗口宽度的单位是 d (天), n (月), w (周), y (年),比如: INTERVAL(1d, AUTO), INTERVAL(3w, AUTO),此时 TSMA 优化无法生效。如果目标表上手动创建了TSMA语句会报错退出这种情况下可以显式指定 Hint SKIP_TSMA 或者不使用 AUTO 作为窗口偏移量。
- 使用 AUTO 作为窗口偏移量时,如果窗口宽度的单位是 d (天)、n (月)、w (周)、y (年),比如 `INTERVAL(1d, AUTO)`、`INTERVAL(3w, AUTO)`,此时 TSMA 优化无法生效。如果目标表上手动创建了 TSMA语句会报错退出这种情况下可以显式指定 Hint SKIP_TSMA 或者不使用 AUTO 作为窗口偏移量。
### 状态窗口
@ -147,13 +147,13 @@ SELECT COUNT(*) FROM meters WHERE _rowts - voltage > 1000000;
![TDengine Database 时间窗口示意图](./timewindow-3.webp)
使用 STATE_WINDOW 来确定状态窗口划分的列。例如
使用 STATE_WINDOW 来确定状态窗口划分的列。例如
```
SELECT COUNT(*), FIRST(ts), status FROM temp_tb_1 STATE_WINDOW(status);
```
仅关心 status 为 2 时的状态窗口的信息。例如
仅关心 status 为 2 时的状态窗口的信息。例如
```
SELECT * FROM (SELECT COUNT(*) AS cnt, FIRST(ts) AS fst, status FROM temp_tb_1 STATE_WINDOW(status)) t WHERE status = 2;
@ -167,7 +167,7 @@ SELECT tbname, _wstart, CASE WHEN voltage >= 205 and voltage <= 235 THEN 1 ELSE
### 会话窗口
会话窗口根据记录的时间戳主键的值来确定是否属于同一个会话。如下图所示,如果设置时间戳的连续的间隔小于等于 12 秒,则以下 6 条记录构成 2 个会话窗口,分别是[2019-04-28 14:22:102019-04-28 14:22:30]和[2019-04-28 14:23:102019-04-28 14:23:30]。因为 2019-04-28 14:22:30 与 2019-04-28 14:23:10 之间的时间间隔是 40 秒超过了连续时间间隔12 秒)。
会话窗口根据记录的时间戳主键的值来确定是否属于同一个会话。如下图所示,如果设置时间戳的连续的间隔小于等于 12 秒,则以下 6 条记录构成 2 个会话窗口,分别是 [2019-04-28 14:22:102019-04-28 14:22:30] 和 [2019-04-28 14:23:102019-04-28 14:23:30]。因为 2019-04-28 14:22:30 与 2019-04-28 14:23:10 之间的时间间隔是 40 秒超过了连续时间间隔12 秒)。
![TDengine Database 时间窗口示意图](./timewindow-2.webp)
@ -211,7 +211,7 @@ select _wstart, _wend, count(*) from t count_window(4);
### 时间戳伪列
窗口聚合查询结果中,如果 SQL 语句中没有指定输出查询结果中的时间戳列,那么最终结果中不会自动包含窗口的时间列信息。如果需要在结果中输出聚合结果所对应的时间窗口信息,需要在 SELECT 子句中使用时间戳相关的伪列: 时间窗口起始时间 (\_WSTART), 时间窗口结束时间 (\_WEND), 时间窗口持续时间 (\_WDURATION), 以及查询整体窗口相关的伪列: 查询窗口起始时间(\_QSTART) 和查询窗口结束时间(\_QEND)。需要注意的是时间窗口起始时间和结束时间均是闭区间,时间窗口持续时间是数据当前时间分辨率下的数值。例如,如果当前数据库的时间分辨率是毫秒,那么结果中 500 就表示当前时间窗口的持续时间是 500毫秒 (500 ms)。
窗口聚合查询结果中,如果 SQL 语句中没有指定输出查询结果中的时间戳列,那么最终结果中不会自动包含窗口的时间列信息。如果需要在结果中输出聚合结果所对应的时间窗口信息,需要在 SELECT 子句中使用时间戳相关的伪列: 时间窗口起始时间 (\_WSTART), 时间窗口结束时间 (\_WEND), 时间窗口持续时间 (\_WDURATION), 以及查询整体窗口相关的伪列查询窗口起始时间(\_QSTART) 和查询窗口结束时间(\_QEND)。需要注意的是时间窗口起始时间和结束时间均是闭区间,时间窗口持续时间是数据当前时间分辨率下的数值。例如,如果当前数据库的时间分辨率是毫秒,那么结果中 500 就表示当前时间窗口的持续时间是 500毫秒 (500 ms)。
### 示例

View File

@ -10,7 +10,7 @@ TDengine 3.0.0.0 开始对消息队列做了大幅的优化和增强以简化用
TDengine 创建 topic 的个数上限通过参数 tmqMaxTopicNum 控制,默认 20 个。
TDengine 使用 SQL 创建一个 topic共有三种类型的 topic
TDengine 使用 SQL 创建一个 topic共有三种类型的 topic
### 查询 topic
@ -20,12 +20,13 @@ TDengine 使用 SQL 创建一个 topic共有三种类型的 topic
CREATE TOPIC [IF NOT EXISTS] topic_name as subquery
```
通过 `SELECT` 语句订阅(包括 `SELECT *``SELECT ts, c1` 等指定查询订阅,可以带条件过滤、标量函数计算,但不支持聚合函数、不支持时间窗口聚合)。需要注意的是:
通过 `SELECT` 语句订阅(包括 `SELECT *` `SELECT ts, c1` 等指定查询订阅,可以带条件过滤、标量函数计算,但不支持聚合函数、不支持时间窗口聚合)。需要注意的是:
- 该类型 TOPIC 一旦创建则订阅数据的结构确定。
- 被订阅或用于计算的列或标签不可被删除(`ALTER table DROP`)、修改(`ALTER table MODIFY`)。
- 若发生表结构变更,新增的列不出现在结果中。
- 对于 select \*,则订阅展开为创建时所有的列(子表、普通表为数据列,超级表为数据列加标签列)
- 对于 select \*,则订阅展开为创建时所有的列(子表、普通表为数据列,超级表为数据列加标签列)。
### 超级表 topic
语法:
@ -38,7 +39,7 @@ CREATE TOPIC [IF NOT EXISTS] topic_name [with meta] AS STABLE stb_name [where_co
- 不会限制用户的表结构变更。
- 返回的是非结构化的数据:返回数据的结构会随之超级表的表结构变化而变化。
- with meta 参数可选,选择时将返回创建超级表,子表等语句,主要用于taosx做超级表迁移
- with meta 参数可选,选择时将返回创建超级表,子表等语句,主要用于 taosX 做超级表迁移。
- where_condition 参数可选选择时将用来过滤符合条件的子表订阅这些子表。where 条件里不能有普通列,只能是 tag 或 tbnamewhere 条件里可以用函数,用来过滤 tag但是不能是聚合函数因为子表 tag 值无法做聚合。也可以是常量表达式,比如 2 > 1订阅全部子表或者 false订阅 0 个子表)
- 返回数据不包含标签。
@ -52,9 +53,9 @@ CREATE TOPIC [IF NOT EXISTS] topic_name [with meta] AS DATABASE db_name;
通过该语句可创建一个包含数据库所有表数据的订阅
- with meta 参数可选,选择时将返回创建数据库里所有超级表,子表的语句,主要用于taosx做数据库迁移
- with meta 参数可选,选择时将返回创建数据库里所有超级表,子表的语句,主要用于 taosX 做数据库迁移。
说明: 超级表订阅和库订阅属于高级订阅模式,容易出错,如确实要使用,请咨询专业人员
说明:超级表订阅和库订阅属于高级订阅模式,容易出错,如确实要使用,请咨询 TDengine 运维团队
## 删除 topic

View File

@ -20,7 +20,7 @@ stream_options: {
```
其中 subquery 是 select 普通查询语法的子集:
其中 subquery 是 select 普通查询语法的子集
```sql
subquery: SELECT select_list
@ -30,11 +30,11 @@ subquery: SELECT select_list
window_clause
```
支持会话窗口、状态窗口、滑动窗口、事件窗口和计数窗口其中状态窗口、事件窗口和计数窗口搭配超级表时必须与partition by tbname一起使用。对于数据源表是复合主键的流不支持状态窗口、事件窗口、计数窗口的计算。
支持会话窗口、状态窗口、滑动窗口、事件窗口和计数窗口其中,状态窗口、事件窗口和计数窗口搭配超级表时必须与 partition by tbname 一起使用。对于数据源表是复合主键的流,不支持状态窗口、事件窗口、计数窗口的计算。
stb_name 是保存计算结果的超级表的表名如果该超级表不存在会自动创建如果已存在则检查列的schema信息。详见 写入已存在的超级表。
stb_name 是保存计算结果的超级表的表名,如果该超级表不存在,会自动创建;如果已存在,则检查列的 schema 信息。详见 [写入已存在的超级表](#写入已存在的超级表)
TAGS 子句定义了流计算中创建TAG的规则可以为每个partition对应的子表生成自定义的TAG值详见 自定义TAG
TAGS 子句定义了流计算中创建TAG的规则可以为每个 partition 对应的子表生成自定义的TAG值详见 [自定义 TAG](#自定义 TAG)
```sql
create_definition:
col_name column_definition
@ -42,7 +42,7 @@ column_definition:
type_name [COMMENT 'string_value']
```
subtable 子句定义了流式计算中创建的子表的命名规则,详见 流式计算的 partition 部分
subtable 子句定义了流式计算中创建的子表的命名规则,详见 [流式计算的 partition](#流式计算的 partition)
```sql
window_clause: {
@ -54,15 +54,17 @@ window_clause: {
}
```
其中SESSION 是会话窗口tol_val 是时间间隔的最大范围。在 tol_val 时间间隔范围内的数据都属于同一个窗口,如果连续的两条数据的时间超过 tol_val则自动开启下一个窗口。该窗口的 _wend 等于最后一条数据的时间加上 tol_val。
其中
STATE_WINDOW 是状态窗口col 用来标识状态量相同的状态量数值则归属于同一个状态窗口col 数值改变后则当前窗口结束,自动开启下一个窗口
- SESSION 是会话窗口tol_val 是时间间隔的最大范围。在 tol_val 时间间隔范围内的数据都属于同一个窗口,如果连续的两条数据的时间超过 tol_val则自动开启下一个窗口。该窗口的 _wend 等于最后一条数据的时间加上 tol_val
INTERVAL 是时间窗口又可分为滑动时间窗口和翻转时间窗口。INTERVAL 子句用于指定窗口相等时间周期SLIDING 字句用于指定窗口向前滑动的时间。当 interval_val 与 sliding_val 相等的时候时间窗口即为翻转时间窗口否则为滑动时间窗口注意sliding_val 必须小于等于 interval_val
- STATE_WINDOW 是状态窗口col 用来标识状态量相同的状态量数值则归属于同一个状态窗口col 数值改变后则当前窗口结束,自动开启下一个窗口
EVENT_WINDOW 是事件窗口,根据开始条件和结束条件来划定窗口。当 start_trigger_condition 满足时则窗口开始,直到 end_trigger_condition 满足时窗口关闭。 start_trigger_condition 和 end_trigger_condition 可以是任意 TDengine 支持的条件表达式,且可以包含不同的列
- INTERVAL 是时间窗口又可分为滑动时间窗口和翻转时间窗口。INTERVAL 子句用于指定窗口相等时间周期SLIDING 字句用于指定窗口向前滑动的时间。当 interval_val 与 sliding_val 相等的时候时间窗口即为翻转时间窗口否则为滑动时间窗口注意sliding_val 必须小于等于 interval_val
COUNT_WINDOW 是计数窗口,按固定的数据行数来划分窗口。 count_val 是常量是正整数必须大于等于2小于2147483648。 count_val 表示每个 COUNT_WINDOW 包含的最大数据行数,总数据行数不能整除 count_val 时,最后一个窗口的行数会小于 count_val 。 sliding_val 是常量,表示窗口滑动的数量,类似于 INTERVAL 的 SLIDING 。
- EVENT_WINDOW 是事件窗口,根据开始条件和结束条件来划定窗口。当 start_trigger_condition 满足时则窗口开始,直到 end_trigger_condition 满足时窗口关闭。start_trigger_condition 和 end_trigger_condition 可以是任意 TDengine 支持的条件表达式,且可以包含不同的列。
- COUNT_WINDOW 是计数窗口按固定的数据行数来划分窗口。count_val 是常量,是正整数,必须大于等于 2小于 2147483648。count_val 表示每个 COUNT_WINDOW 包含的最大数据行数,总数据行数不能整除 count_val 时,最后一个窗口的行数会小于 count_val。sliding_val 是常量,表示窗口滑动的数量,类似于 INTERVAL 的 SLIDING。
窗口的定义与时序数据特色查询中的定义完全相同,详见 [TDengine 特色查询](../distinguished)
@ -97,7 +99,7 @@ SELECT _wstart, count(*), avg(voltage) from meters PARTITION BY tbname COUNT_WIN
CREATE STREAM avg_vol_s INTO avg_vol SUBTABLE(CONCAT('new-', tname)) AS SELECT _wstart, count(*), avg(voltage) FROM meters PARTITION BY tbname tname INTERVAL(1m);
```
PARTITION 子句中,为 tbname 定义了一个别名 tname, 在PARTITION 子句中的别名可以用于 SUBTABLE 子句中的表达式计算,在上述示例中,流新创建的子表将以前缀 'new-' 连接原表名作为表名(从3.2.3.0开始,为了避免 SUBTABLE 中的表达式无法区分各个子表,即误将多个相同时间线写入一个子表,在指定的子表名后面加上 _stableName_groupId)
PARTITION 子句中,为 tbname 定义了一个别名 tname, 在 PARTITION 子句中的别名可以用于 SUBTABLE 子句中的表达式计算,在上述示例中,流新创建的子表将以前缀 'new-' 连接原表名作为表名(从 v3.2.3.0 开始,为了避免 SUBTABLE 中的表达式无法区分各个子表,即误将多个相同时间线写入一个子表,在指定的子表名后面加上 _stableName_groupId
注意,子表名的长度若超过 TDengine 的限制,将被截断。若要生成的子表名已经存在于另一超级表,由于 TDengine 的子表名是唯一的,因此对应新子表的创建以及数据的写入将会失败。
@ -147,7 +149,7 @@ SELECT * from information_schema.`ins_streams`;
在创建流时,可以通过 TRIGGER 指令指定流式计算的触发模式。
对于非窗口计算,流式计算的触发是实时的;对于窗口计算,目前提供 4 种触发模式,默认为 WINDOW_CLOSE
对于非窗口计算,流式计算的触发是实时的;对于窗口计算,目前提供 4 种触发模式,默认为 WINDOW_CLOSE
1. AT_ONCE写入立即触发
@ -230,7 +232,7 @@ TDengine 对于修改数据提供两种处理方式,由 IGNORE UPDATE 选项
CREATE STREAM streams2 trigger at_once INTO st1 TAGS(cc varchar(100)) as select _wstart, count(*) c1 from st partition by concat("tag-", tbname) as cc interval(10s));
```
PARTITION 子句中,为 concat("tag-", tbname)定义了一个别名cc, 对应超级表st1的自定义TAG的名字。在上述示例中流新创建的子表的TAG将以前缀 'new-' 连接原表名作为TAG的值。
PARTITION 子句中,为 concat("tag-", tbname) 定义了一个别名 cc对应超级表 st1 的自定义 TAG 的名字。在上述示例中,流新创建的子表的 TAG 将以前缀 'new-' 连接原表名作为 TAG 的值。
会对TAG信息进行如下检查
1. 检查 tag 的 schema 信息是否匹配,对于不匹配的,则自动进行数据类型转换,当前只有数据长度大于 4096byte 时才报错,其余场景都能进行类型转换。
@ -272,14 +274,14 @@ T = 最新事件时间 - DELETE_MARK
## 暂停、恢复流计算
1.流计算暂停计算任务
PAUSE STREAM [IF EXISTS] stream_name;
没有指定IF EXISTS如果该stream不存在则报错如果存在则暂停流计算。指定了IF EXISTS如果该stream不存在则返回成功如果存在则暂停流计算
没有指定 IF EXISTS如果该 stream 不存在,则报错;如果存在,则暂停流计算。指定了 IF EXISTS如果该 stream 不存在,则返回成功;如果存在,则暂停流计算
2.流计算恢复计算任务
RESUME STREAM [IF EXISTS] [IGNORE UNTREATED] stream_name;
没有指定 IF EXISTS如果该 stream 不存在,则报错,如果存在,则恢复流计算;指定了 IF EXISTS如果 stream 不存在,则返回成功;如果存在,则恢复流计算。如果指定 IGNORE UNTREATED则恢复流计算时忽略流计算暂停期间写入的数据。
## 状态数据备份与同步
流计算的中间结果成为计算的状态数据,需要在流计算整个生命周期中进行持久化保存。为了确保流计算中间状态能够在集群环境下在不同的节点间可靠地同步和迁移,至3.3.2.1 版本开始,需要在运行环境中部署 rsync 软件,还需要增加以下的步骤:
流计算的中间结果成为计算的状态数据,需要在流计算整个生命周期中进行持久化保存。为了确保流计算中间状态能够在集群环境下在不同的节点间可靠地同步和迁移,从 v3.3.2.1 开始,需要在运行环境中部署 rsync 软件,还需要增加以下的步骤:
1. 在配置文件中配置 snode 的地址IP + 端口)和状态数据备份目录(该目录系 snode 所在的物理节点的目录)。
2. 然后创建 snode。
完成上述两个步骤以后才能创建流。

View File

@ -16,7 +16,7 @@ TDengine SQL 是用户对 TDengine 进行数据写入和查询的主要工具。
- | 表示多选一,选择其中一个即可,但不能输入 | 本身
- … 表示前面的项可重复多个
为更好地说明 SQL 语法的规则及其特点,本文假设存在一个数据集。以智能电表(meters)为例,假设每个智能电表采集电流、电压、相位三个量。其建模如下:
为更好地说明 SQL 语法的规则及其特点,本文假设存在一个数据集。以智能电表meters为例,假设每个智能电表采集电流、电压、相位三个量。其建模如下:
```
taos> DESCRIBE meters;
@ -30,7 +30,7 @@ taos> DESCRIBE meters;
groupid | INT | 4 | TAG |
```
数据集包含 4 个智能电表的数据,按照 TDengine 的建模规则,对应 4 个子表,其名称分别是 d1001, d1002, d1003, d1004。
数据集包含 4 个智能电表的数据,按照 TDengine 的建模规则,对应 4 个子表,其名称分别是 d1001、d1002、d1003、d1004。
```mdx-code-block
import DocCardList from '@theme/DocCardList';

View File

@ -93,16 +93,16 @@ DSN 描述字符串基本结构如下:
各部分意义见下表:
- **driver**: 必须指定驱动名以便连接器选择何种方式创建连接,支持如下驱动名:
- **taos**: 默认驱动,支持 SQL 执行,参数绑定,无模式写入。
- **tmq**: 使用 TMQ 订阅数据。
- **protocol**: 显示指定以何种方式建立连接,例如:`taos+ws://localhost:6041` 指定以 WebSocket 方式建立连接。
- **http/ws**: 使用 WebSocket 协议。
- **https/wss**: 在 WebSocket 连接方式下显示启用 SSL/TLS 协议。
- **driver**必须指定驱动名以便连接器选择何种方式创建连接,支持如下驱动名:
- **taos**默认驱动,支持 SQL 执行,参数绑定,无模式写入。
- **tmq**使用 TMQ 订阅数据。
- **protocol**显示指定以何种方式建立连接,例如:`taos+ws://localhost:6041` 指定以 WebSocket 方式建立连接。
- **http/ws**使用 WebSocket 协议。
- **https/wss**在 WebSocket 连接方式下显示启用 SSL/TLS 协议。
- **username/password**: 用于创建连接的用户名及密码。
- **host/port**: 指定创建连接的服务器及端口,当不指定服务器地址及端口时 WebSocket 连接默认为 `localhost:6041` 。
- **database**: 指定默认连接的数据库名,可选参数。
- **username/password**用于创建连接的用户名及密码。
- **host/port**指定创建连接的服务器及端口,当不指定服务器地址及端口时 WebSocket 连接默认为 `localhost:6041` 。
- **database**指定默认连接的数据库名,可选参数。
- **params**:其他可选参数。
一个完整的 DSN 描述字符串示例如下:`taos+ws://localhost:6041/test` 表示使用 WebSocket`ws`)方式通过 `6041` 端口连接服务器 `localhost`,并指定默认数据库为 `test`。
@ -280,7 +280,7 @@ TDengine 推荐数据库应用的每个线程都建立一个独立的连接,
- **参数说明**
- stmt[入参] 指向一个有效的预编译的 SQL 语句对象指针。
- bind[入参] 指向一个有效的 WS_MULTI_BIND 结构体指针,该结构体包含了要批量绑定到 SQL 语句中的参数列表。
- len: [入参] bind 数组的元素个数。
- len[入参] bind 数组的元素个数。
- **返回值**`0`:成功。非 `0`:失败,详情请参考错误码页面。
- `int ws_stmt_set_tbname(WS_STMT *stmt, const char *name)`
@ -356,8 +356,8 @@ TDengine 推荐数据库应用的每个线程都建立一个独立的连接,
协议类型是枚举类型,包含以下三种格式:
- WS_TSDB_SML_LINE_PROTOCOLInfluxDB 行协议Line Protocol)
- WS_TSDB_SML_TELNET_PROTOCOL: OpenTSDB Telnet 文本行协议
- WS_TSDB_SML_JSON_PROTOCOL: OpenTSDB Json 协议格式
- WS_TSDB_SML_TELNET_PROTOCOLOpenTSDB Telnet 文本行协议
- WS_TSDB_SML_JSON_PROTOCOLOpenTSDB Json 协议格式
时间戳分辨率的定义,定义在 `taosws.h` 文件中,具体内容如下:
@ -625,9 +625,9 @@ TDengine 服务端或客户端安装后,`taos.h` 位于:
TDengine 客户端驱动的动态库位于:
- Linux: `/usr/local/taos/driver/libtaos.so`
- Windows: `C:\TDengine\driver\taos.dll`
- macOS: `/usr/local/lib/libtaos.dylib`
- Linux`/usr/local/taos/driver/libtaos.so`
- Windows`C:\TDengine\driver\taos.dll`
- macOS`/usr/local/lib/libtaos.dylib`
### 支持的平台
@ -689,7 +689,7 @@ TDengine 客户端驱动的版本号与 TDengine 服务端的版本号是一一
- `int taos_options_connection(TAOS *taos, TSDB_OPTION_CONNECTION option, const void *arg, ...)`
- **接口说明**:设置客户端连接选项,目前支持字符集设置(`TSDB_OPTION_CONNECTION_CHARSET`)、时区设置(`TSDB_OPTION_CONNECTION_TIMEZONE`)、用户 IP 设置(`TSDB_OPTION_CONNECTION_USER_IP`)、用户 APP 设置(`TSDB_OPTION_CONNECTION_USER_APP`)。
- **参数说明**
- `taos`: [入参] taos_connect 返回的连接句柄。
- `taos`[入参] taos_connect 返回的连接句柄。
- `option`[入参] 设置项类型。
- `arg`[入参] 设置项值。
- **返回值**`0`:成功,`非0`:失败。
@ -727,7 +727,7 @@ TDengine 客户端驱动的版本号与 TDengine 服务端的版本号是一一
- **参数说明**
- ip[入参] TDengine 集群中任一节点的 FQDN。
- user[入参] 用户名。
- auth: [入参] 原始密码取 32 位小写 md5。
- auth[入参] 原始密码取 32 位小写 md5。
- db[入参] 数据库名称,如果用户没有提供,也可以正常连接,用户可以通过该连接创建新的数据库,如果用户提供了数据库名字,则说明该数据库用户已经创建好,缺省使用该数据库。
- port[入参] taosd 程序监听的端口。
- **返回值**:返回数据库连接,返回值为空表示失败。应用程序需要保存返回的参数,以便后续使用。
@ -866,7 +866,7 @@ TDengine 还提供性能更高的异步 API 处理数据插入、查询操作。
- **接口说明**:异步执行 SQL 语句。
- **参数说明**
- taos[入参] 指向数据库连接的指针,数据库连接是通过 `taos_connect()` 函数建立。
- sql: [入参] 需要执行的 SQL 语句。
- sql[入参] 需要执行的 SQL 语句。
- fp用户定义的回调函数其第三个参数 `code` 用于指示操作是否成功,`0` 表示成功,负数表示失败(调用 `taos_errstr()` 可获取失败原因)。应用在定义回调函数的时候,主要处理第二个参数 `TAOS_RES *`,该参数是查询返回的结果集。
- param应用提供的用于回调的参数。
@ -995,8 +995,8 @@ TDengine 的异步 API 均采用非阻塞调用模式。应用程序可以用多
协议类型是枚举类型,包含以下三种格式:
- TSDB_SML_LINE_PROTOCOLInfluxDB 行协议Line Protocol)
- TSDB_SML_TELNET_PROTOCOL: OpenTSDB Telnet 文本行协议
- TSDB_SML_JSON_PROTOCOL: OpenTSDB Json 协议格式
- TSDB_SML_TELNET_PROTOCOLOpenTSDB Telnet 文本行协议
- TSDB_SML_JSON_PROTOCOLOpenTSDB Json 协议格式
时间戳分辨率的定义,定义在 `taos.h` 文件中,具体内容如下:

View File

@ -21,8 +21,8 @@ TDengine 的 JDBC 驱动实现尽可能与关系型数据库驱动保持一致
## JDBC 和 JRE 版本兼容性
- JDBC: 支持 JDBC 4.2 及以上版本。
- JRE: 支持 JRE 8 及以上版本。
- JDBC支持 JDBC 4.2 及以上版本。
- JRE支持 JRE 8 及以上版本。
## 支持的平台
@ -101,7 +101,7 @@ JDBC 连接器可能报错的错误码包括 4 种:
| 0x2318 | | REST 连接中出现了数据传输异常,请检查网络情况并重试。 |
| 0x2319 | user is required | 创建连接时缺少用户名信息 |
| 0x231a | password is required | 创建连接时缺少密码信息 |
| 0x231c | httpEntity is null, sql: | REST 连接中执行出现异常 |
| 0x231c | httpEntity is null, sql | REST 连接中执行出现异常 |
| 0x231d | can't create connection with server within | 通过增加参数 httpConnectTimeout 增加连接耗时,或是请检查与 taosAdapter 之间的连接情况。 |
| 0x231e | failed to complete the task within the specified time | 通过增加参数 messageWaitTimeout 增加执行耗时,或是请检查与 taosAdapter 之间的连接情况。 |
| 0x2350 | unknown error | 未知异常,请在 github 反馈给开发人员。 |
@ -162,7 +162,7 @@ WKB规范请参考[Well-Known Binary (WKB)](https://libgeos.org/specifications/w
- connectionPoolsHikariCP, Druid, dbcp, c3p0 等连接池中使用 taos-jdbcdriver。
- SpringJdbcTemplateSpring JdbcTemplate 中使用 taos-jdbcdriver。
- mybatisplus-demoSpringboot + Mybatis 中使用 taos-jdbcdriver。
- springbootdemo: Springboot 中使用 taos-jdbcdriver。
- springbootdemoSpringboot 中使用 taos-jdbcdriver。
- consumer-demoConsumer 消费 TDengine 数据示例,可通过参数控制消费速度。
请参考:[JDBC example](https://github.com/taosdata/TDengine/tree/main/docs/examples/JDBC)
@ -226,7 +226,7 @@ TDengine 的 JDBC URL 规范格式为:
- charset客户端使用的字符集默认值为系统字符集。
- locale客户端语言环境默认值系统当前 locale。
- timezone客户端使用的时区默认值为系统当前时区。
- batchfetch: true在执行查询时批量拉取结果集false逐行拉取结果集。默认值为true。开启批量拉取同时获取一批数据在查询数据量较大时批量拉取可以有效的提升查询性能。
- batchfetchtrue在执行查询时批量拉取结果集false逐行拉取结果集。默认值为true。开启批量拉取同时获取一批数据在查询数据量较大时批量拉取可以有效的提升查询性能。
- batchErrorIgnoretrue在执行 Statement 的 executeBatch 时,如果中间有一条 SQL 执行失败将继续执行下面的 SQL。false不再执行失败 SQL 后的任何语句。默认值为false。
JDBC 原生连接的使用请参见[视频教程](https://www.taosdata.com/blog/2020/11/11/1955.html)。
@ -251,9 +251,9 @@ TDengine 中,只要保证 firstEp 和 secondEp 中一个节点有效,就可
- user登录 TDengine 用户名,默认值 'root'。
- password用户登录密码默认值 'taosdata'。
- batchErrorIgnoretrue在执行 Statement 的 executeBatch 时,如果中间有一条 SQL 执行失败,继续执行下面的 SQL 了。false不再执行失败 SQL 后的任何语句。默认值为false。
- httpConnectTimeout: 连接超时时间,单位 ms 默认值为 60000。
- messageWaitTimeout: 消息超时时间, 单位 ms 默认值为 60000。
- useSSL: 连接中是否使用 SSL。
- httpConnectTimeout连接超时时间,单位 ms 默认值为 60000。
- messageWaitTimeout消息超时时间, 单位 ms 默认值为 60000。
- useSSL连接中是否使用 SSL。
- timezone客户端使用的时区连接上生效默认值为系统时区。推荐不设置使用系统时区性能更好。
**注意**部分配置项比如locale、charset在 WebSocket 连接中不生效。
@ -269,10 +269,10 @@ TDengine 中,只要保证 firstEp 和 secondEp 中一个节点有效,就可
- user登录 TDengine 用户名,默认值 'root'。
- password用户登录密码默认值 'taosdata'。
- batchErrorIgnoretrue在执行 Statement 的 executeBatch 时,如果中间有一条 SQL 执行失败,继续执行下面的 SQL 了。false不再执行失败 SQL 后的任何语句。默认值为false。
- httpConnectTimeout: 连接超时时间,单位 ms 默认值为 60000。
- httpSocketTimeout: socket 超时时间,单位 ms默认值为 60000。
- useSSL: 连接中是否使用 SSL。
- httpPoolSize: REST 并发请求大小,默认 20。
- httpConnectTimeout连接超时时间,单位 ms 默认值为 60000。
- httpSocketTimeoutsocket 超时时间,单位 ms默认值为 60000。
- useSSL连接中是否使用 SSL。
- httpPoolSizeREST 并发请求大小,默认 20。
**注意**部分配置项比如locale、charset 和 timezone在 REST 连接中不生效。
@ -292,7 +292,7 @@ TDengine 中,只要保证 firstEp 和 secondEp 中一个节点有效,就可
properties 中的配置参数如下:
- TSDBDriver.PROPERTY_KEY_USER登录 TDengine 用户名,默认值 'root'。
- TSDBDriver.PROPERTY_KEY_PASSWORD用户登录密码默认值 'taosdata'。
- TSDBDriver.PROPERTY_KEY_BATCH_LOAD: true在执行查询时批量拉取结果集false逐行拉取结果集。默认值为false。因历史原因使用 REST 连接时,若设置此参数为 true 会变成 WebSocket 连接。
- TSDBDriver.PROPERTY_KEY_BATCH_LOADtrue在执行查询时批量拉取结果集false逐行拉取结果集。默认值为false。因历史原因使用 REST 连接时,若设置此参数为 true 会变成 WebSocket 连接。
- TSDBDriver.PROPERTY_KEY_BATCH_ERROR_IGNOREtrue在执行 Statement 的 executeBatch 时,如果中间有一条 SQL 执行失败,继续执行下面的 sq 了。false不再执行失败 SQL 后的任何语句。默认值为false。
- TSDBDriver.PROPERTY_KEY_CONFIG_DIR仅在使用 JDBC 原生连接时生效。客户端配置文件目录路径Linux OS 上默认值 `/etc/taos`Windows OS 上默认值 `C:/TDengine/cfg`。
- TSDBDriver.PROPERTY_KEY_CHARSET客户端使用的字符集默认值为系统字符集。
@ -300,21 +300,21 @@ properties 中的配置参数如下:
- TSDBDriver.PROPERTY_KEY_TIME_ZONE
- 原生连接客户端使用的时区默认值为系统当前时区全局生效。因为历史的原因我们只支持POSIX标准的部分规范如UTC-8(代表中国上上海), GMT-8Asia/Shanghai 这几种形式。
- WebSocket 连接:客户端使用的时区,连接上生效,默认值为系统时区。仅支持 IANA 时区,即 Asia/Shanghai 这种形式。推荐不设置,使用系统时区性能更好。
- TSDBDriver.HTTP_CONNECT_TIMEOUT: 连接超时时间,单位 ms 默认值为 60000。仅在 REST 连接时生效。
- TSDBDriver.HTTP_SOCKET_TIMEOUT: socket 超时时间,单位 ms默认值为 60000。仅在 REST 连接且 batchfetch 设置为 false 时生效。
- TSDBDriver.PROPERTY_KEY_MESSAGE_WAIT_TIMEOUT: 消息超时时间, 单位 ms 默认值为 60000。 仅 WebSocket 连接下有效。
- TSDBDriver.PROPERTY_KEY_USE_SSL: 连接中是否使用 SSL。仅在 WebSocket/REST 连接时生效。
- TSDBDriver.HTTP_POOL_SIZE: REST 并发请求大小,默认 20。
- TSDBDriver.PROPERTY_KEY_ENABLE_COMPRESSION: 传输过程是否启用压缩。仅在使用 REST/WebSocket 连接时生效。true: 启用false: 不启用。默认为 false。
- TSDBDriver.PROPERTY_KEY_ENABLE_AUTO_RECONNECT: 是否启用自动重连。仅在使用 WebSocket 连接时生效。true: 启用false: 不启用。默认为 false。
- TSDBDriver.HTTP_CONNECT_TIMEOUT连接超时时间,单位 ms 默认值为 60000。仅在 REST 连接时生效。
- TSDBDriver.HTTP_SOCKET_TIMEOUTsocket 超时时间,单位 ms默认值为 60000。仅在 REST 连接且 batchfetch 设置为 false 时生效。
- TSDBDriver.PROPERTY_KEY_MESSAGE_WAIT_TIMEOUT消息超时时间, 单位 ms 默认值为 60000。 仅 WebSocket 连接下有效。
- TSDBDriver.PROPERTY_KEY_USE_SSL连接中是否使用 SSL。仅在 WebSocket/REST 连接时生效。
- TSDBDriver.HTTP_POOL_SIZEREST 并发请求大小,默认 20。
- TSDBDriver.PROPERTY_KEY_ENABLE_COMPRESSION:传输过程是否启用压缩。仅在使用 REST/WebSocket 连接时生效。true启用false不启用。默认为 false。
- TSDBDriver.PROPERTY_KEY_ENABLE_AUTO_RECONNECT:是否启用自动重连。仅在使用 WebSocket 连接时生效。true启用false不启用。默认为 false。
> **注意**:启用自动重连仅对简单执行 SQL 语句以及 无模式写入、数据订阅有效。对于参数绑定无效。自动重连仅对连接建立时通过参数指定数据库有效,对后面的 `use db` 语句切换数据库无效。
- TSDBDriver.PROPERTY_KEY_RECONNECT_INTERVAL_MS: 自动重连重试间隔,单位毫秒,默认值 2000。仅在 PROPERTY_KEY_ENABLE_AUTO_RECONNECT 为 true 时生效。
- TSDBDriver.PROPERTY_KEY_RECONNECT_RETRY_COUNT: 自动重连重试次数,默认值 3仅在 PROPERTY_KEY_ENABLE_AUTO_RECONNECT 为 true 时生效。
- TSDBDriver.PROPERTY_KEY_DISABLE_SSL_CERT_VALIDATION: 关闭 SSL 证书验证 。仅在使用 WebSocket 连接时生效。true: 启用false: 不启用。默认为 false。
- TSDBDriver.PROPERTY_KEY_RECONNECT_INTERVAL_MS自动重连重试间隔,单位毫秒,默认值 2000。仅在 PROPERTY_KEY_ENABLE_AUTO_RECONNECT 为 true 时生效。
- TSDBDriver.PROPERTY_KEY_RECONNECT_RETRY_COUNT自动重连重试次数,默认值 3仅在 PROPERTY_KEY_ENABLE_AUTO_RECONNECT 为 true 时生效。
- TSDBDriver.PROPERTY_KEY_DISABLE_SSL_CERT_VALIDATION:关闭 SSL 证书验证 。仅在使用 WebSocket 连接时生效。true启用false不启用。默认为 false。
- TSDBDriver.PROPERTY_KEY_APP_NAME: App 名称,可用于 `show connections` 查询结果显示。仅在使用 WebSocket 连接时生效。默认值为 java。
- TSDBDriver.PROPERTY_KEY_APP_IP: App IP可用于 `show connections` 查询结果显示。仅在使用 WebSocket 连接时生效。默认值为空。
- TSDBDriver.PROPERTY_KEY_APP_NAMEApp 名称,可用于 `show connections` 查询结果显示。仅在使用 WebSocket 连接时生效。默认值为 java。
- TSDBDriver.PROPERTY_KEY_APP_IPApp IP可用于 `show connections` 查询结果显示。仅在使用 WebSocket 连接时生效。默认值为空。
此外对 JDBC 原生连接,通过指定 URL 和 Properties 还可以指定其他参数比如日志级别、SQL 长度等。
@ -1364,18 +1364,18 @@ JDBC 标准不支持数据订阅,因此本章所有接口都是扩展接口。
- **异常**:如果创建失败,抛出 SQLException 异常。
创建消费者支持属性列表:
- td.connect.type: 连接方式。jni表示使用动态库连接的方式ws/WebSocket表示使用 WebSocket 进行数据通信。默认为 jni 方式。
- bootstrap.servers: TDengine 服务端所在的`ip:port`,如果使用 WebSocket 连接,则为 taosAdapter 所在的`ip:port`。
- enable.auto.commit: 是否允许自动提交。
- group.id: consumer: 所在的 group。
- value.deserializer: 结果集反序列化方法,可以继承 `com.taosdata.jdbc.tmq.ReferenceDeserializer`,并指定结果集 bean实现反序列化。也可以继承 `com.taosdata.jdbc.tmq.Deserializer`,根据 SQL 的 resultSet 自定义反序列化方式。
- httpConnectTimeout: 创建连接超时参数,单位 ms默认为 5000 ms。仅在 WebSocket 连接下有效。
- messageWaitTimeout: 数据传输超时参数,单位 ms默认为 10000 ms。仅在 WebSocket 连接下有效。
- httpPoolSize: 同一个连接下最大并行请求数。仅在 WebSocket 连接下有效。
- TSDBDriver.PROPERTY_KEY_ENABLE_COMPRESSION: 传输过程是否启用压缩。仅在使用 WebSocket 连接时生效。true: 启用false: 不启用。默认为 false。
- TSDBDriver.PROPERTY_KEY_ENABLE_AUTO_RECONNECT: 是否启用自动重连。仅在使用 WebSocket 连接时生效。true: 启用false: 不启用。默认为 false。
- TSDBDriver.PROPERTY_KEY_RECONNECT_INTERVAL_MS: 自动重连重试间隔,单位毫秒,默认值 2000。仅在 PROPERTY_KEY_ENABLE_AUTO_RECONNECT 为 true 时生效。
- TSDBDriver.PROPERTY_KEY_RECONNECT_RETRY_COUNT: 自动重连重试次数,默认值 3仅在 PROPERTY_KEY_ENABLE_AUTO_RECONNECT 为 true 时生效。
- td.connect.type连接方式。jni表示使用动态库连接的方式ws/WebSocket表示使用 WebSocket 进行数据通信。默认为 jni 方式。
- bootstrap.serversTDengine 服务端所在的`ip:port`,如果使用 WebSocket 连接,则为 taosAdapter 所在的`ip:port`。
- enable.auto.commit是否允许自动提交。
- group.idconsumer所在的 group。
- value.deserializer结果集反序列化方法,可以继承 `com.taosdata.jdbc.tmq.ReferenceDeserializer`,并指定结果集 bean实现反序列化。也可以继承 `com.taosdata.jdbc.tmq.Deserializer`,根据 SQL 的 resultSet 自定义反序列化方式。
- httpConnectTimeout创建连接超时参数,单位 ms默认为 5000 ms。仅在 WebSocket 连接下有效。
- messageWaitTimeout数据传输超时参数,单位 ms默认为 10000 ms。仅在 WebSocket 连接下有效。
- httpPoolSize同一个连接下最大并行请求数。仅在 WebSocket 连接下有效。
- TSDBDriver.PROPERTY_KEY_ENABLE_COMPRESSION:传输过程是否启用压缩。仅在使用 WebSocket 连接时生效。true启用false不启用。默认为 false。
- TSDBDriver.PROPERTY_KEY_ENABLE_AUTO_RECONNECT:是否启用自动重连。仅在使用 WebSocket 连接时生效。true启用false不启用。默认为 false。
- TSDBDriver.PROPERTY_KEY_RECONNECT_INTERVAL_MS自动重连重试间隔,单位毫秒,默认值 2000。仅在 PROPERTY_KEY_ENABLE_AUTO_RECONNECT 为 true 时生效。
- TSDBDriver.PROPERTY_KEY_RECONNECT_RETRY_COUNT自动重连重试次数,默认值 3仅在 PROPERTY_KEY_ENABLE_AUTO_RECONNECT 为 true 时生效。
其他参数请参考:[Consumer 参数列表](../../../develop/tmq/#创建参数) 注意TDengine服务端自 3.2.0.0 版本开始消息订阅中的 auto.offset.reset 默认值发生变化。

View File

@ -109,15 +109,15 @@ DSN 描述字符串基本结构如下:
各部分意义见下表:
- **driver**: 必须指定驱动名以便连接器选择何种方式创建连接,支持如下驱动名:
- **taos**: 使用 TDengine 连接器驱动,默认是使用 taos 驱动。
- **tmq**: 使用 TMQ 订阅数据。
- **protocol**: 显示指定以何种方式建立连接,例如:`taos+ws://localhost:6041` 指定以 WebSocket 方式建立连接。
- **http/ws**: 使用 WebSocket 创建连接。
- **https/wss**: 在 WebSocket 连接方式下显示启用 SSL/TLS 连接。
- **username/password**: 用于创建连接的用户名及密码。
- **host/port**: 指定创建连接的服务器及端口,当不指定服务器地址及端口时(`taos://`),原生连接默认为 `localhost:6030`WebSocket 连接默认为 `localhost:6041` 。
- **database**: 指定默认连接的数据库名,可选参数。
- **driver**必须指定驱动名以便连接器选择何种方式创建连接,支持如下驱动名:
- **taos**使用 TDengine 连接器驱动,默认是使用 taos 驱动。
- **tmq**使用 TMQ 订阅数据。
- **protocol**显示指定以何种方式建立连接,例如:`taos+ws://localhost:6041` 指定以 WebSocket 方式建立连接。
- **http/ws**使用 WebSocket 创建连接。
- **https/wss**在 WebSocket 连接方式下显示启用 SSL/TLS 连接。
- **username/password**用于创建连接的用户名及密码。
- **host/port**指定创建连接的服务器及端口,当不指定服务器地址及端口时(`taos://`),原生连接默认为 `localhost:6030`WebSocket 连接默认为 `localhost:6041` 。
- **database**指定默认连接的数据库名,可选参数。
- **params**:其他可选参数。
一个完整的 DSN 描述字符串示例如下:`taos+ws://localhost:6041/test` 表示使用 WebSocket`ws`)方式通过 `6041` 端口连接服务器 `localhost`,并指定默认数据库为 `test`。
@ -596,6 +596,6 @@ Offset 结构体提供了获取当前消息所属的数据库,主题和分区
## 附录
- Rust 连接器文档https://docs.rs/taos
- Rust 连接器项目地址: https://github.com/taosdata/taos-connector-rust
- deadpool 连接池: https://crates.io/crates/deadpool
- r2d2 连接池: https://crates.io/crates/r2d2
- Rust 连接器项目地址https://github.com/taosdata/taos-connector-rust
- deadpool 连接池https://crates.io/crates/deadpool
- r2d2 连接池https://crates.io/crates/r2d2

View File

@ -168,24 +168,24 @@ TDengine 目前支持时间戳、数字、字符、布尔类型,与 Python 对
| protocol | | username | password | host | port | database | params |
```
- **protocol**: 使用 websocket 协议建立连接。例如`ws://localhost:6041`
- **username/password**: 数据库的用户名和密码。
- **host/port**: 主机地址和端口号。例如`localhost:6041`
- **database**: 数据库名称。
- **params**: 其他参数。 例如token。
- **protocol**使用 websocket 协议建立连接。例如`ws://localhost:6041`
- **username/password**数据库的用户名和密码。
- **host/port**主机地址和端口号。例如`localhost:6041`
- **database**数据库名称。
- **params**其他参数。 例如token。
#### 建立连接
- `fn connect(dsn: Option<&str>, args: Option<&PyDict>) -> PyResult<Connection>`
- **接口说明**:建立 taosAdapter 连接。
- **参数说明**
- `dsn`: 类型 `Option<&str>` 可选数据源名称DSN用于指定要连接的数据库的位置和认证信息。
- `args`: 类型 `Option<&PyDict>` 可选,以 Python 字典的形式提供, 可用于设置
- `user`: 数据库的用户名
- `password`: 数据库的密码。
- `host`: 主机地址
- `port`: 端口号
- `database`: 数据库名称
- `dsn`类型 `Option<&str>` 可选数据源名称DSN用于指定要连接的数据库的位置和认证信息。
- `args`类型 `Option<&PyDict>` 可选,以 Python 字典的形式提供, 可用于设置
- `user`数据库的用户名
- `password`数据库的密码。
- `host`主机地址
- `port`端口号
- `database`数据库名称
- **返回值**:连接对象。
- **异常**:操作失败抛出 `ConnectionError` 异常。
- `fn cursor(&self) -> PyResult<Cursor>`
@ -205,7 +205,7 @@ TDengine 目前支持时间戳、数字、字符、布尔类型,与 Python 对
- **接口说明**:执行带有 req_id 的 sql 语句。
- **参数说明**
- `sql`:待执行的 sql 语句。
- `reqId`: 用于问题追踪。
- `reqId`用于问题追踪。
- **返回值**:影响的条数。
- **异常**:操作失败抛出 `QueryError` 异常。
- `fn query(&self, sql: &str) -> PyResult<TaosResult>`
@ -218,7 +218,7 @@ TDengine 目前支持时间戳、数字、字符、布尔类型,与 Python 对
- **接口说明**:查询带有 req_id 的 sql 语句。
- **参数说明**
- `sql`:待执行的 sql 语句。
- `reqId`: 用于问题追踪。
- `reqId`用于问题追踪。
- **返回值**`TaosResult` 数据集对象。
- **异常**:操作失败抛出 `QueryError` 异常。
@ -238,11 +238,11 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- **接口说明**:无模式写入。
- **参数说明**
- `lines`:待写入的数据数组,无模式具体的数据格式可参考 `Schemaless 写入`。
- `protocol`: 协议类型
- `protocol`协议类型
- `PySchemalessProtocol::Line`InfluxDB 行协议Line Protocol)。
- `PySchemalessProtocol::Telnet`OpenTSDB 文本行协议。
- `PySchemalessProtocol::Json`JSON 协议格式
- `precision`: 时间精度
- `precision`时间精度
- `PySchemalessPrecision::Hour`:小时
- `PySchemalessPrecision::Minute`:分钟
- `PySchemalessPrecision::Second` 秒
@ -250,7 +250,7 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- `PySchemalessPrecision::Microsecond`:微秒
- `PySchemalessPrecision::Nanosecond`:纳秒
- `ttl`:表过期时间,单位天。
- `reqId`: 用于问题追踪。
- `reqId`用于问题追踪。
- **异常**:操作失败抛出 `DataError` 或 `OperationalError` 异常。
#### 参数绑定
@ -261,22 +261,22 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- `fn prepare(&mut self, sql: &str) -> PyResult<()>`
- **接口说明**:绑定预编译 sql 语句。
- **参数说明**
- `sql`: 预编译的 SQL 语句。
- `sql`预编译的 SQL 语句。
- **异常**:操作失败抛出 `ProgrammingError` 异常。
- `fn set_tbname(&mut self, table_name: &str) -> PyResult<()>`
- **接口说明**:设置将要写入数据的表名。
- **参数说明**
- `tableName`: 表名,如果需要指定数据库, 例如: `db_name.table_name` 即可。
- `tableName`:表名,如果需要指定数据库, 例如:`db_name.table_name` 即可。
- **异常**:操作失败抛出 `ProgrammingError` 异常。
- `fn set_tags(&mut self, tags: Vec<PyTagView>) -> PyResult<()>`
- **接口说明**:设置表 Tags 数据, 用于自动建表。
- **参数说明**
- `paramsArray`: Tags 数据。
- `paramsArray`Tags 数据。
- **异常**:操作失败抛出 `ProgrammingError` 异常。
- `fn bind_param(&mut self, params: Vec<PyColumnView>) -> PyResult<()>`
- **接口说明**:绑定数据。
- **参数说明**
- `paramsArray`: 绑定数据。
- `paramsArray`绑定数据。
- **异常**:操作失败抛出 `ProgrammingError` 异常。
- `fn add_batch(&mut self) -> PyResult<()>`
- **接口说明**:提交绑定数据。
@ -298,8 +298,8 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- port端口号。
- group.id所在的 group。
- client.id客户端id。
- td.connect.user: 数据库用户名。
- td.connect.pass: 数据库密码。
- td.connect.user数据库用户名。
- td.connect.pass数据库密码。
- td.connect.token数据库的连接token。
- auto.offset.reset来确定消费位置为最新数据latest还是包含旧数据earliest
- enable.auto.commit是否允许自动提交。
@ -307,14 +307,14 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- `fn Consumer(conf: Option<&PyDict>, dsn: Option<&str>) -> PyResult<Self>`
- **接口说明** 消费者构造函数。
- `conf`: 类型 `Option<&PyDict>` 可选,以 Python 字典的形式提供, 具体配置参见属性列表。
- `dsn`: 类型 `Option<&str>` 可选数据源名称DSN用于指定要连接的数据库的位置和认证信息。
- `conf`类型 `Option<&PyDict>` 可选,以 Python 字典的形式提供, 具体配置参见属性列表。
- `dsn`类型 `Option<&str>` 可选数据源名称DSN用于指定要连接的数据库的位置和认证信息。
- **返回值**Consumer 消费者对象。
- **异常**:操作失败抛出 `ConsumerException` 异常。
- `fn subscribe(&mut self, topics: &PyList) -> PyResult<()>`
- **接口说明** 订阅一组主题。
- **参数说明**
- `topics`: 订阅的主题列表。
- `topics`订阅的主题列表。
- **异常**:操作失败抛出 `ConsumerException` 异常。
- `fn unsubscribe(&mut self)`
- **接口说明** 取消订阅。
@ -322,13 +322,13 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- `fn poll(&mut self, timeout: Option<f64>) -> PyResult<Option<Message>>`
- **接口说明** 轮询消息。
- **参数说明**
- `timeoutMs`: 表示轮询的超时时间,单位毫秒。
- `timeoutMs`表示轮询的超时时间,单位毫秒。
- **返回值**`Message` 每个主题对应的数据。
- **异常**:操作失败抛出 `ConsumerException` 异常。
- `fn commit(&mut self, message: &mut Message) -> PyResult<()>`
- **接口说明** 提交当前处理的消息的偏移量。
- **参数说明**
- `message`: 类型 `Message`, 当前处理的消息的偏移量。
- `message`类型 `Message`, 当前处理的消息的偏移量。
- **异常**:操作失败抛出 `ConsumerException` 异常。
- `fn assignment(&mut self) -> PyResult<Option<Vec<TopicAssignment>>>`
- **接口说明**:获取消费者当前分配的指定的分区或所有分区。
@ -337,22 +337,22 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- `fn seek(&mut self, topic: &str, vg_id: i32, offset: i64) -> PyResult<()>`
- **接口说明**:将给定分区的偏移量设置到指定的位置。
- **参数说明**
- `topic`: 订阅的主题。
- `vg_id`: vgroupid。
- `topic`订阅的主题。
- `vg_id`vgroupid。
- `offset`:需要设置的偏移量。
- **异常**:操作失败抛出 ConsumerException 异常。
- `fn committed(&mut self, topic: &str, vg_id: i32) -> PyResult<i64>`
- **接口说明**获取订阅主题的vgroupid分区最后提交的偏移量。
- **参数说明**
- `topic`: 订阅的主题。
- `vg_id`: vgroupid。
- `topic`订阅的主题。
- `vg_id`vgroupid。
- **返回值**`i64`,分区最后提交的偏移量。
- **异常**:操作失败抛出 ConsumerException 异常。
- `fn position(&mut self, topic: &str, vg_id: i32) -> PyResult<i64>`
- **接口说明**:获取给定分区当前的偏移量。
- **参数说明**
- `topic`: 订阅的主题。
- `vg_id`: vgroupid。
- `topic`订阅的主题。
- `vg_id`vgroupid。
- **返回值**`i64`,分区最后提交的偏移量。
- **异常**:操作失败抛出 ConsumerException 异常。
- `fn close(&mut self)`
@ -366,13 +366,13 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- `def connect(*args, **kwargs):`
- **接口说明**:建立 taosAdapter 连接。
- **参数说明**
- `kwargs`: 以 Python 字典的形式提供, 可用于设置
- `user`: 数据库的用户名
- `password`: 数据库的密码。
- `host`: 主机地址
- `port`: 端口号
- `database`: 数据库名称
- `timezone`: 时区
- `kwargs`以 Python 字典的形式提供, 可用于设置
- `user`数据库的用户名
- `password`数据库的密码。
- `host`主机地址
- `port`端口号
- `database`数据库名称
- `timezone`时区
- **返回值**`TaosConnection` 连接对象。
- **异常**:操作失败抛出 `AttributeError` 或 `ConnectionError` 异常。
- `def cursor(self)`
@ -385,14 +385,14 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- **接口说明**:执行 sql 语句。
- **参数说明**
- `operation`:待执行的 sql 语句。
- `reqId`: 用于问题追踪。
- `reqId`用于问题追踪。
- **返回值**:影响的条数。
- **异常**:操作失败抛出 `ProgrammingError` 异常。
- `def query(self, sql: str, req_id: Optional[int] = None) -> TaosResult`
- **接口说明**:查询数据。
- **参数说明**
- `sql`:待执行的 sql 语句。
- `reqId`: 用于问题追踪。
- `reqId`用于问题追踪。
- **返回值**`TaosResult` 数据集对象。
- **异常**:操作失败抛出 `ProgrammingError` 异常。
@ -415,11 +415,11 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- **接口说明**:无模式写入。
- **参数说明**
- `lines`:待写入的数据数组,无模式具体的数据格式可参考 `Schemaless 写入`。
- `protocol`: 协议类型
- `protocol`协议类型
- `SmlProtocol.LINE_PROTOCOL`InfluxDB 行协议Line Protocol)。
- `SmlProtocol.TELNET_PROTOCOL`OpenTSDB 文本行协议。
- `SmlProtocol.JSON_PROTOCOL`JSON 协议格式
- `precision`: 时间精度
- `precision`时间精度
- `SmlPrecision.Hour`:小时
- `SmlPrecision.Minute`:分钟
- `SmlPrecision.Second` 秒
@ -427,7 +427,7 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- `SmlPrecision.Microsecond`:微秒
- `SmlPrecision.Nanosecond`:纳秒
- `ttl`:表过期时间,单位天。
- `reqId`: 用于问题追踪。
- `reqId`用于问题追踪。
- **返回值**:影响的条数。
- **异常**:操作失败抛出 `SchemalessError` 异常。
@ -435,26 +435,26 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- `def statement2(self, sql=None, option=None)`
- **接口说明**:使用连接对象创建 stmt2 对象
- **参数说明**
- `sql`: 绑定的 SQL 语句,如果不为空会调用`prepare`函数
- `sql`绑定的 SQL 语句,如果不为空会调用`prepare`函数
- `option` 传入 TaosStmt2Option 类实例选项
- **返回值**stmt2 对象。
- **异常**:操作失败抛出 `ConnectionError` 异常。
- `def prepare(self, sql)`
- **接口说明**:绑定预编译 sql 语句
- **参数说明**
- `sql`: 绑定的 SQL 语句
- `sql`绑定的 SQL 语句
- **异常**:操作失败抛出 `StatementError` 异常。
- `def bind_param(self, tbnames, tags, datas)`
- **接口说明**:以独立数组方式绑定数据
- **参数说明**
- `tbnames`: 绑定表名数组,数据类型为 list
- `tags`: 绑定 tag 列值数组,数据类型为 list
- `tags`: 绑定普通列值数组,数据类型为 list
- `tbnames`绑定表名数组,数据类型为 list
- `tags`绑定 tag 列值数组,数据类型为 list
- `tags`绑定普通列值数组,数据类型为 list
- **异常**:操作失败抛出 `StatementError` 异常
- `def bind_param_with_tables(self, tables)`
- **接口说明**以独立表方式绑定数据独立表是以表为组织单位每张表中有表名TAG 值及普通列数值属性
- **参数说明**
- `tables`: `BindTable` 独立表对象数组
- `tables``BindTable` 独立表对象数组
- **异常**:操作失败抛出 `StatementError` 异常。
- `def execute(self) -> int:`
- **接口说明**:执行将绑定数据全部写入
@ -473,21 +473,21 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- td.connect.port端口号。
- group.id所在的 group。
- client.id客户端id。
- td.connect.user: 数据库用户名。
- td.connect.pass: 数据库密码。
- td.connect.user数据库用户名。
- td.connect.pass数据库密码。
- td.connect.token数据库的连接token。
- auto.offset.reset来确定消费位置为最新数据latest还是包含旧数据earliest
- enable.auto.commit是否允许自动提交。
- auto.commit.interval.ms自动提交间隔
- `def Consumer(configs)`
- **接口说明** 消费者构造函数。
- `configs`: Python 字典的形式提供, 具体配置参见属性列表。
- `configs`Python 字典的形式提供, 具体配置参见属性列表。
- **返回值**Consumer 消费者对象。
- **异常**:操作失败抛出 `TmqError` 异常。
- `def subscribe(self, topics)`
- **接口说明** 订阅一组主题。
- **参数说明**
- `topics`: 订阅的主题列表。
- `topics`订阅的主题列表。
- **异常**:操作失败抛出 `TmqError` 异常。
- `def unsubscribe(self)`
- **接口说明** 取消订阅。
@ -495,14 +495,14 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- `def poll(self, timeout: float = 1.0)`
- **接口说明** 轮询消息。
- **参数说明**
- `timeout`: 表示轮询的超时时间,单位毫秒。
- `timeout`表示轮询的超时时间,单位毫秒。
- **返回值**`Message` 每个主题对应的数据。
- **异常**:操作失败抛出 `TmqError` 异常。
- `def commit(self, message: Message = None, offsets: [TopicPartition] = None)`
- **接口说明** 提交当前处理的消息的偏移量。
- **参数说明**
- `message`: 类型 `Message`, 当前处理的消息的偏移量。
- `offsets`: 类型 `[TopicPartition]`, 提交一批消息的偏移量。
- `message`类型 `Message`, 当前处理的消息的偏移量。
- `offsets`类型 `[TopicPartition]`, 提交一批消息的偏移量。
- **异常**:操作失败抛出 `TmqError` 异常。
- `def assignment(self)`
- **接口说明**:获取消费者当前分配的指定的分区或所有分区。
@ -511,25 +511,25 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- `def seek(self, partition)`
- **接口说明**:将给定分区的偏移量设置到指定的位置。
- **参数说明**
- `partition`: 需要设置的偏移量。
- `topic`: 订阅的主题
- `partition`: 分区
- `offset`: 偏移量
- `partition`需要设置的偏移量。
- `topic`订阅的主题
- `partition`分区
- `offset`偏移量
- **异常**:操作失败抛出 `TmqError` 异常。
- `def committed(self, partitions)`
- **接口说明**:获取订阅主题的分区最后提交的偏移量。
- **参数说明**
- `partition`: 需要设置的偏移量。
- `topic`: 订阅的主题
- `partition`: 分区
- `partition`需要设置的偏移量。
- `topic`订阅的主题
- `partition`分区
- **返回值**`partition`,分区最后提交的偏移量。
- **异常**:操作失败抛出 `TmqError` 异常。
- `def position(self, partitions)`
- **接口说明**:获取给定分区当前的偏移量。
- **参数说明**
- `partition`: 需要设置的偏移量。
- `topic`: 订阅的主题
- `partition`: 分区
- `partition`需要设置的偏移量。
- `topic`订阅的主题
- `partition`分区
- **返回值**`partition`,分区最后提交的偏移量。
- **异常**:操作失败抛出 TmqError 异常。
- `def close(self)`
@ -541,39 +541,39 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。
- `def connect(**kwargs) -> TaosRestConnection`
- **接口说明**:建立 taosAdapter 连接。
- **参数说明**
- `kwargs`: 以 Python 字典的形式提供, 可用于设置
- `user`: 数据库的用户名
- `password`: 数据库的密码。
- `host`: 主机地址
- `port`: 端口号
- `database`: 数据库名称
- `kwargs`以 Python 字典的形式提供, 可用于设置
- `user`数据库的用户名
- `password`数据库的密码。
- `host`主机地址
- `port`端口号
- `database`数据库名称
- **返回值**:连接对象。
- **异常**:操作失败抛出 `ConnectError` 异常。
- `def execute(self, sql: str, req_id: Optional[int] = None) -> Optional[int]`
- **接口说明**:执行 sql 语句。
- **参数说明**
- `sql`:待执行的 sql 语句。
- `reqId`: 用于问题追踪。
- `reqId`用于问题追踪。
- **返回值**:影响的条数。
- **异常**:操作失败抛出 `ConnectError` 或 `HTTPError` 异常。
- `def query(self, sql: str, req_id: Optional[int] = None) -> Result`
- **接口说明**:查询数据。
- **参数说明**
- `sql`:待执行的 sql 语句。
- `reqId`: 用于问题追踪。
- `reqId`用于问题追踪。
- **返回值**`Result` 数据集对象。
- **异常**:操作失败抛出 `ConnectError` 或 `HTTPError` 异常。
- `RestClient(self, url: str, token: str = None, database: str = None, user: str = "root", password: str = "taosdata", timeout: int = None, convert_timestamp: bool = True, timezone: Union[str, datetime.tzinfo] = None)`
- **接口说明**:建立 taosAdapter 连接 client。
- **参数说明**
- `url`: taosAdapter REST 服务的 URL。
- `user`: 数据库的用户名。
- `password`: 数据库的密码。
- `database`: 数据库名称。
- `timezone`: 时区。
- `timeout`: HTTP 请求超时时间。单位为秒。
- `convert_timestamp`: 是否将时间戳从STR类型转换为datetime类型。
- `timezone`: 时区.
- `url`taosAdapter REST 服务的 URL。
- `user`数据库的用户名。
- `password`数据库的密码。
- `database`数据库名称。
- `timezone`时区。
- `timeout`HTTP 请求超时时间。单位为秒。
- `convert_timestamp`是否将时间戳从STR类型转换为datetime类型。
- `timezone`时区.
- **返回值**:连接对象。
- **异常**:操作失败抛出 `ConnectError` 异常。
- `def sql(self, q: str, req_id: Optional[int] = None) -> dict`

View File

@ -116,11 +116,11 @@ Node.js 连接器(`@tdengine/websocket`, 其通过 taosAdapter 提供的 We
| protocol | | username | password | host | port | database | params |
```
- **protocol**: 使用 websocket 协议建立连接。例如`ws://localhost:6041`
- **username/password**: 数据库的用户名和密码。
- **host/port**: 主机地址和端口号。例如`localhost:6041`
- **database**: 数据库名称。
- **params**: 其他参数。 例如token。
- **protocol**使用 websocket 协议建立连接。例如`ws://localhost:6041`
- **username/password**数据库的用户名和密码。
- **host/port**主机地址和端口号。例如`localhost:6041`
- **database**数据库名称。
- **params**其他参数。 例如token。
- 完整 URL 示例:
@ -180,7 +180,7 @@ WSConfig 中的配置如下:
- **接口说明**:执行 sql 语句。
- **参数说明**
- `sql`:待执行的 sql 语句。
- `reqId`: 请求 id 非必填,用于问题追踪。
- `reqId`请求 id 非必填,用于问题追踪。
- **返回值**:执行结果
```js
TaosResult {
@ -194,7 +194,7 @@ WSConfig 中的配置如下:
- **接口说明**:查询数据。
- **参数说明**
- `sql`:待执行的查询 sql 语句。
- `reqId`: 请求 id 非必填,用于问题追踪。
- `reqId`请求 id 非必填,用于问题追踪。
- **返回值**WSRows 数据集对象。
- **异常**:连接失败抛出 `TDWebSocketClientError` 异常。
@ -225,11 +225,11 @@ WSConfig 中的配置如下:
- **接口说明**:无模式写入。
- **参数说明**
- `lines`:待写入的数据数组,无模式具体的数据格式可参考 `Schemaless 写入`。
- `protocol`: 协议类型
- `protocol`协议类型
- `SchemalessProto.InfluxDBLineProtocol`InfluxDB 行协议Line Protocol)。
- `SchemalessProto.OpenTSDBTelnetLineProtocol`OpenTSDB 文本行协议。
- `SchemalessProto.OpenTSDBJsonFormatProtocol`JSON 协议格式。
- `precision`: 时间精度
- `precision`时间精度
- `Precision.HOURS`:小时
- `Precision.MINUTES`:分钟
- `Precision.SECONDS`:秒
@ -237,31 +237,31 @@ WSConfig 中的配置如下:
- `Precision.MICRO_SECONDS`:微秒
- `Precision.NANO_SECONDS`:纳秒
- `ttl`:表过期时间,单位天。
- `reqId`: 用于问题追踪,可选。
- `reqId`用于问题追踪,可选。
- **异常**:连接失败抛出 `TaosResultError` 异常。
### 参数绑定
- `async stmtInit(reqId?:number): Promise<WsStmt>`
- **接口说明** 使用 WsSql 对象创建 stmt 对象。
- **参数说明**
- `reqId`: 请求 id 非必填,用于问题追踪。
- `reqId`请求 id 非必填,用于问题追踪。
- **返回值**stmt 对象。
- **异常**:连接失败抛出 `TDWebSocketClientError` 异常。
- `async prepare(sql: string): Promise<void>`
- **接口说明** 绑定预编译 sql 语句。
- **参数说明**
- `sql`: 预编译的 SQL 语句。
- `sql`预编译的 SQL 语句。
- **异常**:连接失败抛出 `TDWebSocketClientError` 异常。
- `async setTableName(tableName: string): Promise<void>`
- **接口说明** 设置将要写入数据的表名。
- **参数说明**
- `tableName`: 表名,如果需要指定数据库, 例如: `db_name.table_name` 即可。
- `tableName`:表名,如果需要指定数据库, 例如:`db_name.table_name` 即可。
- **异常**:连接失败抛出 `TDWebSocketClientError` 异常。
通过 StmtBindParams 对象设置绑定数据。
- `setBoolean(params :any[])`
- **接口说明** 设置布尔值。
- **参数说明**
- `params`: 布尔类型列表。
- `params`布尔类型列表。
- **异常**:连接失败抛出 `TDWebSocketClientError` 异常。
- 下面接口除了要设置的值类型不同外,其余同 setBoolean
- `setTinyInt(params :any[])`
@ -284,12 +284,12 @@ WSConfig 中的配置如下:
- `async setTags(paramsArray:StmtBindParams): Promise<void>`
- **接口说明** 设置表 Tags 数据,用于自动建表。
- **参数说明**
- `paramsArray`: Tags 数据。
- `paramsArray`Tags 数据。
- **异常**:连接失败抛出 `TDWebSocketClientError` 异常。
- `async bind(paramsArray:StmtBindParams): Promise<void>`
- **接口说明** 绑定数据。
- **参数说明**
- `paramsArray`: 绑定数据。
- `paramsArray`绑定数据。
- **异常**:连接失败抛出 `TDWebSocketClientError` 异常。
- `async batch(): Promise<void>`
- **接口说明** 提交绑定数据。
@ -307,69 +307,69 @@ WSConfig 中的配置如下:
### 数据订阅
- **创建消费者支持属性列表**
- taos.TMQConstants.CONNECT_USER: 用户名。
- taos.TMQConstants.CONNECT_PASS: 密码。
- taos.TMQConstants.GROUP_ID: 所在的 group。
- taos.TMQConstants.CLIENT_ID: 客户端id。
- taos.TMQConstants.WS_URL: taosAdapter 的url地址。
- taos.TMQConstants.AUTO_OFFSET_RESET: 来确定消费位置为最新数据latest还是包含旧数据earliest
- taos.TMQConstants.ENABLE_AUTO_COMMIT: 是否允许自动提交。
- taos.TMQConstants.AUTO_COMMIT_INTERVAL_MS: 自动提交间隔。
- taos.TMQConstants.CONNECT_MESSAGE_TIMEOUT: 数据传输超时参数,单位 ms默认为 10000 ms。
- taos.TMQConstants.CONNECT_USER用户名。
- taos.TMQConstants.CONNECT_PASS密码。
- taos.TMQConstants.GROUP_ID所在的 group。
- taos.TMQConstants.CLIENT_ID客户端id。
- taos.TMQConstants.WS_URLtaosAdapter 的url地址。
- taos.TMQConstants.AUTO_OFFSET_RESET来确定消费位置为最新数据latest还是包含旧数据earliest
- taos.TMQConstants.ENABLE_AUTO_COMMIT是否允许自动提交。
- taos.TMQConstants.AUTO_COMMIT_INTERVAL_MS自动提交间隔。
- taos.TMQConstants.CONNECT_MESSAGE_TIMEOUT数据传输超时参数,单位 ms默认为 10000 ms。
- `static async newConsumer(wsConfig:Map<string, any>):Promise<WsConsumer>`
- **接口说明** 消费者构造函数。
- **参数说明**
- `wsConfig`: 创建消费者属性配置。
- `wsConfig`创建消费者属性配置。
- **返回值**WsConsumer 消费者对象。
- **异常**:如果在执行过程中出现异常,抛出 `TDWebSocketClientError` 错误。
- `async subscribe(topics: Array<string>, reqId?:number): Promise<void>`
- **接口说明** 订阅一组主题。
- **参数说明**
- `topics`: 订阅的主题列表。
- `reqId`: 请求 id 非必填,用于问题追踪。
- `topics`订阅的主题列表。
- `reqId`请求 id 非必填,用于问题追踪。
- **异常**:失败抛出 `TDWebSocketClientError` 异常。
- `async unsubscribe(reqId?:number): Promise<void>`
- **接口说明** 取消订阅。
- **参数说明**
- `reqId`: 请求 id 非必填,用于问题追踪。
- `reqId`请求 id 非必填,用于问题追踪。
- **异常**:失败抛出 `TDWebSocketClientError` 异常。
- `async poll(timeoutMs: number, reqId?:number):Promise<Map<string, TaosResult>>`
- **接口说明** 轮询消息。
- **参数说明**
- `timeoutMs`: 表示轮询的超时时间,单位毫秒。
- `reqId`: 请求 id 非必填,用于问题追踪。
- `timeoutMs`表示轮询的超时时间,单位毫秒。
- `reqId`请求 id 非必填,用于问题追踪。
- **返回值**`Map<string, TaosResult>` 每个主题对应的数据。
- **异常**:失败抛出 `TDWebSocketClientError` 异常。
- `async subscription(reqId?:number):Promise<Array<string>>`
- **接口说明** 获取当前订阅的所有主题。
- **参数说明**
- `reqId`: 请求 id 非必填,用于问题追踪。
- `reqId`请求 id 非必填,用于问题追踪。
- **返回值**`Array<string>` 主题列表。
- **异常**:失败抛出 `TDWebSocketClientError` 异常。
- `async commit(reqId?:number):Promise<Array<TopicPartition>>`
- **接口说明** 提交当前处理的消息的偏移量。
- **参数说明**
- `reqId`: 请求 id 非必填,用于问题追踪。
- `reqId`请求 id 非必填,用于问题追踪。
- **返回值**`Array<TopicPartition>` 每个主题的消费进度。
- **异常**:失败抛出 `TDWebSocketClientError` 异常。
- `async committed(partitions:Array<TopicPartition>, reqId?:number):Promise<Array<TopicPartition>>`
- **接口说明**:获取一组分区最后提交的偏移量。
- **参数说明**
- `partitions`:一个 `Array<TopicPartition>` 类型的参数,表示要查询的分区集合。
- `reqId`: 请求 id 非必填,用于问题追踪。
- `reqId`请求 id 非必填,用于问题追踪。
- **返回值**`Array<TopicPartition>`,即一组分区最后提交的偏移量。
- **异常**:如果在获取提交的偏移量过程中发生错误,将抛出 `TDWebSocketClientError` 异常。
- `async seek(partition:TopicPartition, reqId?:number):Promise<void>`
- **接口说明**:将给定分区的偏移量设置到指定的位置。
- **参数说明**
- `partition`:一个 `TopicPartition` 类型的参数,表示要操作的分区和要设置的偏移量。
- `reqId`: 请求 id 非必填,用于问题追踪。
- `reqId`请求 id 非必填,用于问题追踪。
- **异常**:如果在设置偏移量过程中发生错误,将抛出 `TDWebSocketClientError` 异常。
- `async positions(partitions:Array<TopicPartition>, reqId?:number):Promise<Array<TopicPartition>>`
- **接口说明**:获取给定分区当前的偏移量。
- **参数说明**
- `partitions`:一个 `TopicPartition` 类型的参数,表示要查询的分区。
- `reqId`: 请求 id 非必填,用于问题追踪。
- `reqId`请求 id 非必填,用于问题追踪。
- **返回值**`Array<TopicPartition>`,即一组分区最后提交的偏移量。
- **异常**:如果在获取偏移量过程中发生错误,将抛出 `TDWebSocketClientError` 异常。
- `async seekToBeginning(partitions:Array<TopicPartition>):Promise<void>`

View File

@ -18,8 +18,8 @@ TDengine 服务端或客户端安装后,`taos.h` 位于:
TDengine 客户端驱动的动态库位于:
- Linux: `/usr/local/taos/driver/libtaos.so`
- Windows: `C:\TDengine\taos.dll`
- Linux`/usr/local/taos/driver/libtaos.so`
- Windows`C:\TDengine\taos.dll`
- macOS`/usr/local/lib/libtaos.dylib`
## 支持的平台
@ -85,7 +85,7 @@ phpize && ./configure --enable-swoole && make -j && make install
本节展示了使用客户端驱动访问 TDengine 集群的常见访问方式的示例代码。
> 所有错误都会抛出异常: `TDengine\Exception\TDengineException`
> 所有错误都会抛出异常`TDengine\Exception\TDengineException`
### 建立连接

View File

@ -52,11 +52,11 @@ TDengine ODBC 支持两种连接 TDengine 数据库方式WebSocket 连接与
![ODBC WebSocket connection config](./assets/odbc-ws-config-zh.webp)
4.1 【DSN】:Data Source Name 必填,为新添加的 ODBC 数据源命名
4.1 【DSN】Data Source Name 必填,为新添加的 ODBC 数据源命名
4.2【连接类型】 : 必选,选择连接类型,这里选择 【WebSocket】
4.2【连接类型】必选,选择连接类型,这里选择 【WebSocket】
4.3【URL】必填ODBC 数据源 URL示例: `http://localhost:6041` 云服务的 url 示例: `https://gw.cloud.taosdata.com?token=your_token`
4.3【URL】必填ODBC 数据源 URL示例`http://localhost:6041` 云服务的 url 示例:`https://gw.cloud.taosdata.com?token=your_token`
4.4【数据库】选填,需要连接的默认数据库
@ -84,11 +84,11 @@ TDengine ODBC 支持两种连接 TDengine 数据库方式WebSocket 连接与
![ODBC native connection config](./assets/odbc-native-config-zh.webp)
4.1 【DSN】:Data Source Name 必填,为新添加的 ODBC 数据源命名
4.1 【DSN】Data Source Name 必填,为新添加的 ODBC 数据源命名
4.2 【连接类型】 : 必选,选择连接类型,这里选择 【Native】 原生连接;
4.2 【连接类型】必选,选择连接类型,这里选择 【Native】 原生连接;
4.3 【服务器】必填ODBC 数据源 服务器 地址,示例: `localhost:6030`
4.3 【服务器】必填ODBC 数据源 服务器 地址,示例`localhost:6030`
4.4 【数据库】选填,需要连接的默认数据库
@ -267,388 +267,388 @@ TDengine ODBC 支持两种连接 TDengine 数据库方式WebSocket 连接与
#### 数据源和驱动程序管理
- API: ConfigDSN
- **是否支持**: 支持(仅 Windows
- **标准**: ODBC
- **作用**: 配置数据源
- APIConfigDSN
- **是否支持**支持(仅 Windows
- **标准**ODBC
- **作用**配置数据源
- API: ConfigDriver
- **是否支持**: 支持(仅 Windows
- **标准**: ODBC
- **作用**: 用于执行与特定驱动程序相关的安装和配置任务
- APIConfigDriver
- **是否支持**支持(仅 Windows
- **标准**ODBC
- **作用**用于执行与特定驱动程序相关的安装和配置任务
- API: ConfigTranslator
- **是否支持**: 不支持
- **标准**: ODBC
- **作用**: 用于解析DSN的配置在DSN配置和实际数据库驱动程序配置之间进行翻译或转换
- APIConfigTranslator
- **是否支持**不支持
- **标准**ODBC
- **作用**用于解析DSN的配置在DSN配置和实际数据库驱动程序配置之间进行翻译或转换
#### 连接到数据源
- API: SQLAllocHandle
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 分配环境、连接、语句或描述符句柄
- APISQLAllocHandle
- **是否支持**支持
- **标准**ISO 92
- **作用**分配环境、连接、语句或描述符句柄
- API: SQLConnect
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 通过数据源名称、用户 ID 和密码连接到特定驱动程序
- APISQLConnect
- **是否支持**支持
- **标准**ISO 92
- **作用**通过数据源名称、用户 ID 和密码连接到特定驱动程序
- API: SQLDriverConnect
- **是否支持**: 支持
- **标准**: ODBC
- **作用**: 通过连接字符串连接到特定驱动程序,支持更多连接信息
- APISQLDriverConnect
- **是否支持**支持
- **标准**ODBC
- **作用**通过连接字符串连接到特定驱动程序,支持更多连接信息
- API: SQLBrowseConnect
- **是否支持**: 不支持
- **标准**: ODBC
- **作用**: 用于发现和枚举连接到数据源所需的特性和属性值。每次调用 SQLBrowseConnect 都会返回属性和属性值的连续级别
- APISQLBrowseConnect
- **是否支持**不支持
- **标准**ODBC
- **作用**用于发现和枚举连接到数据源所需的特性和属性值。每次调用 SQLBrowseConnect 都会返回属性和属性值的连续级别
- API: SQLAllocEnv
- **是否支持**: 不支持
- **标准**: 弃用
- **作用**: 在 ODBC 3.x 中ODBC 2.x 函数 SQLAllocEnv 已替换为 SQLAllocHandle
- APISQLAllocEnv
- **是否支持**不支持
- **标准**弃用
- **作用**在 ODBC 3.x 中ODBC 2.x 函数 SQLAllocEnv 已替换为 SQLAllocHandle
- API: SQLAllocConnect
- **是否支持**: 不支持
- **标准**: 弃用
- **作用**: 在 ODBC 3.x 中ODBC 2.x 函数 SQLAllocConnect 已替换为 SQLAllocHandle
- APISQLAllocConnect
- **是否支持**不支持
- **标准**弃用
- **作用**在 ODBC 3.x 中ODBC 2.x 函数 SQLAllocConnect 已替换为 SQLAllocHandle
#### 获取有关驱动程序和数据源的信息
- API: SQLDataSources
- **是否支持**: 不支持
- **标准**: ISO 92
- **作用**: 返回可用数据源的列表,由驱动程序管理器处理
- APISQLDataSources
- **是否支持**不支持
- **标准**ISO 92
- **作用**返回可用数据源的列表,由驱动程序管理器处理
- API: SQLDrivers
- **是否支持**: 不支持
- **标准**: ISO 92
- **作用**: 返回由驱动程序管理器处理的已安装驱动程序及其属性的列表
- APISQLDrivers
- **是否支持**不支持
- **标准**ISO 92
- **作用**返回由驱动程序管理器处理的已安装驱动程序及其属性的列表
- API: SQLGetInfo
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 返回有关数据库环境的详细信息如数据库产品名称、驱动程序名、数据库的SQL语法特性、连接能力等等
- APISQLGetInfo
- **是否支持**支持
- **标准**ISO 92
- **作用**返回有关数据库环境的详细信息如数据库产品名称、驱动程序名、数据库的SQL语法特性、连接能力等等
- API: SQLGetFunctions
- **是否支持**: 不支持
- **标准**: ISO 92
- **作用**: 用于查询驱动程序支持的函数
- APISQLGetFunctions
- **是否支持**不支持
- **标准**ISO 92
- **作用**用于查询驱动程序支持的函数
- API: SQLGetTypeInfo
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 返回有关支持的数据类型的信息
- APISQLGetTypeInfo
- **是否支持**支持
- **标准**ISO 92
- **作用**返回有关支持的数据类型的信息
#### 设置和检索驱动程序属性
- API: SQLSetConnectAttr
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 设置连接属性当设置SQL_ATTR_AUTOCOMMIT属性时用于控制自动提交模式
- APISQLSetConnectAttr
- **是否支持**支持
- **标准**ISO 92
- **作用**设置连接属性当设置SQL_ATTR_AUTOCOMMIT属性时用于控制自动提交模式
- API: SQLGetConnectAttr
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 返回连接属性的值
- APISQLGetConnectAttr
- **是否支持**支持
- **标准**ISO 92
- **作用**返回连接属性的值
- API: SQLSetConnectOption
- **是否支持**: 不支持
- **标准**: 弃用
- **作用**: 在 ODBC 3.x 中ODBC 2.0 函数 SQLSetConnectOption 已替换为 SQLSetConnectAttr
- APISQLSetConnectOption
- **是否支持**不支持
- **标准**弃用
- **作用**在 ODBC 3.x 中ODBC 2.0 函数 SQLSetConnectOption 已替换为 SQLSetConnectAttr
- API: SQLGetConnectOption
- **是否支持**: 不支持
- **标准**: 弃用
- **作用**: 在 ODBC 3.x 中ODBC 2.0 函数 SQLSetConnectOption 已替换为 SQLGetConnectAttr
- APISQLGetConnectOption
- **是否支持**不支持
- **标准**弃用
- **作用**在 ODBC 3.x 中ODBC 2.0 函数 SQLSetConnectOption 已替换为 SQLGetConnectAttr
- API: SQLSetEnvAttr
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 设置控制环境的属性
- APISQLSetEnvAttr
- **是否支持**支持
- **标准**ISO 92
- **作用**设置控制环境的属性
- API: SQLGetEnvAttr
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 返回环境属性的当前设置
- APISQLGetEnvAttr
- **是否支持**支持
- **标准**ISO 92
- **作用**返回环境属性的当前设置
- API: SQLSetStmtAttr
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 设置与语句相关的属性
- APISQLSetStmtAttr
- **是否支持**支持
- **标准**ISO 92
- **作用**设置与语句相关的属性
- API: SQLGetStmtAttr
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 返回语句属性的当前设置
- APISQLGetStmtAttr
- **是否支持**支持
- **标准**ISO 92
- **作用**返回语句属性的当前设置
- API: SQLSetStmtOption
- **是否支持**: 不支持
- **标准**: 弃用
- **作用**: 在 ODBC 3.x 中ODBC 2.0 函数 SQLSetStmtOption 已替换为 SQLSetStmtAttr
- APISQLSetStmtOption
- **是否支持**不支持
- **标准**弃用
- **作用**在 ODBC 3.x 中ODBC 2.0 函数 SQLSetStmtOption 已替换为 SQLSetStmtAttr
- API: SQLGetStmtOption
- **是否支持**: 不支持
- **标准**: 弃用
- **作用**: 在 ODBC 3.x 中ODBC 2.0 函数 SQLSetStmtOption 已替换为 SQLGetStmtAttr
- APISQLGetStmtOption
- **是否支持**不支持
- **标准**弃用
- **作用**在 ODBC 3.x 中ODBC 2.0 函数 SQLSetStmtOption 已替换为 SQLGetStmtAttr
#### 准备 SQL 请求
- API: SQLAllocStmt
- **是否支持**: 不支持
- **标准**: 弃用
- **作用**: 在 ODBC 3.x 中ODBC 2.x 函数 SQLAllocStmt 已替换为 SQLAllocHandle
- APISQLAllocStmt
- **是否支持**不支持
- **标准**弃用
- **作用**在 ODBC 3.x 中ODBC 2.x 函数 SQLAllocStmt 已替换为 SQLAllocHandle
- API: SQLPrepare
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 用于预处理SQL语句这通常是SQLExecute之前的一个步骤
- APISQLPrepare
- **是否支持**支持
- **标准**ISO 92
- **作用**用于预处理SQL语句这通常是SQLExecute之前的一个步骤
- API: SQLBindCol
- **是否支持**: 支持
- **标准**: ODBC
- **作用**: 用于将结果集中的列绑定到应用程序缓冲区
- APISQLBindCol
- **是否支持**支持
- **标准**ODBC
- **作用**用于将结果集中的列绑定到应用程序缓冲区
- API: SQLBindParameter
- **是否支持**: 支持
- **标准**: ODBC
- **作用**: 用于将SQL语句的参数绑定到应用程序缓冲区
- APISQLBindParameter
- **是否支持**支持
- **标准**ODBC
- **作用**用于将SQL语句的参数绑定到应用程序缓冲区
- API: SQLGetCursorName
- **是否支持**: 不支持
- **标准**: ISO 92
- **作用**: 返回与指定语句关联的游标名称
- APISQLGetCursorName
- **是否支持**不支持
- **标准**ISO 92
- **作用**返回与指定语句关联的游标名称
- API: SQLSetCursorName
- **是否支持**: 不支持
- **标准**: ISO 92
- **作用**: 设置游标名称,允许在查询中使用命名游标
- APISQLSetCursorName
- **是否支持**不支持
- **标准**ISO 92
- **作用**设置游标名称,允许在查询中使用命名游标
- API: SQLSetScrollOptions
- **是否支持**: 不支持
- **标准**: ODBC
- **作用**: 设置控制光标行为的选项
- APISQLSetScrollOptions
- **是否支持**不支持
- **标准**ODBC
- **作用**设置控制光标行为的选项
#### 提交请求
- API: SQLExecute
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 用于执行之前通过 SQLPrepare 准备好的SQL语句
- APISQLExecute
- **是否支持**支持
- **标准**ISO 92
- **作用**用于执行之前通过 SQLPrepare 准备好的SQL语句
- API: SQLExecDirect
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 用于执行包含SQL语句的字符串
- APISQLExecDirect
- **是否支持**支持
- **标准**ISO 92
- **作用**用于执行包含SQL语句的字符串
- API: SQLNativeSql
- **是否支持**: 不支持
- **标准**: ODBC
- **作用**: 用于将应用程序提供的SQL语句转换为数据库驱动程序的本机SQL语法
- APISQLNativeSql
- **是否支持**不支持
- **标准**ODBC
- **作用**用于将应用程序提供的SQL语句转换为数据库驱动程序的本机SQL语法
- API: SQLDescribeParam
- **是否支持**: 支持
- **标准**: ODBC
- **作用**: 返回语句中特定参数的描述
- APISQLDescribeParam
- **是否支持**支持
- **标准**ODBC
- **作用**返回语句中特定参数的描述
- API: SQLNumParams
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 用于查询预编译SQL语句中的参数数量
- APISQLNumParams
- **是否支持**支持
- **标准**ISO 92
- **作用**用于查询预编译SQL语句中的参数数量
- API: SQLParamData
- **是否支持**: 不支持
- **标准**: ISO 92
- **作用**: 用于从参数数据流中获取下一个参数值
- APISQLParamData
- **是否支持**不支持
- **标准**ISO 92
- **作用**用于从参数数据流中获取下一个参数值
- API: SQLPutData
- **是否支持**: 不支持
- **标准**: ISO 92
- **作用**: 当使用流输入方式时,可以用于向输出参数发送数据块
- APISQLPutData
- **是否支持**不支持
- **标准**ISO 92
- **作用**当使用流输入方式时,可以用于向输出参数发送数据块
#### 检索结果和关于结果的信息
- API: SQLRowCount
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 返回受插入或删除请求影响的行数
- APISQLRowCount
- **是否支持**支持
- **标准**ISO 92
- **作用**返回受插入或删除请求影响的行数
- API: SQLNumResultCols
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 返回结果集中的列数
- APISQLNumResultCols
- **是否支持**支持
- **标准**ISO 92
- **作用**返回结果集中的列数
- API: SQLDescribeCol
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 用于描述结果集中列的属性。它提供了关于列的数据类型、列名、列的最大宽度、小数位数和是否可为空等信息
- APISQLDescribeCol
- **是否支持**支持
- **标准**ISO 92
- **作用**用于描述结果集中列的属性。它提供了关于列的数据类型、列名、列的最大宽度、小数位数和是否可为空等信息
- API: SQLColAttribute
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 返回结果集中列的描述符信息,如标题、排序规则等
- APISQLColAttribute
- **是否支持**支持
- **标准**ISO 92
- **作用**返回结果集中列的描述符信息,如标题、排序规则等
- API: SQLColAttributes
- **是否支持**: 不支持
- **标准**: 弃用
- **作用**: 在 ODBC 3.x 中ODBC 2.0 函数 SQLColAttributes 已替换为 SQLColAttribute
- APISQLColAttributes
- **是否支持**不支持
- **标准**弃用
- **作用**在 ODBC 3.x 中ODBC 2.0 函数 SQLColAttributes 已替换为 SQLColAttribute
- API: SQLGetData
- **是否支持**: 支持
- **标准**: ODBC
- **作用**: 用于从结果集中的当前行获取特定列的数据
- APISQLGetData
- **是否支持**支持
- **标准**ODBC
- **作用**用于从结果集中的当前行获取特定列的数据
- API: SQLMoreResults
- **是否支持**: 支持
- **标准**: ODBC
- **作用**: 多个结果集的 SQL 语句执行后(例如:一个批处理或存储过程),移动到下一个结果集
- APISQLMoreResults
- **是否支持**支持
- **标准**ODBC
- **作用**多个结果集的 SQL 语句执行后(例如:一个批处理或存储过程),移动到下一个结果集
- API: SQLFetch
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 用于从结果集中提取下一行数据,并返回所有绑定列的数据
- APISQLFetch
- **是否支持**支持
- **标准**ISO 92
- **作用**用于从结果集中提取下一行数据,并返回所有绑定列的数据
- API: SQLFetchScroll
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 用于从结果集中提取指定的数据行集,并返回所有绑定列的数据
- APISQLFetchScroll
- **是否支持**支持
- **标准**ISO 92
- **作用**用于从结果集中提取指定的数据行集,并返回所有绑定列的数据
- API: SQLExtendedFetch
- **是否支持**: 不支持
- **标准**: 弃用
- **作用**: 在 ODBC 3.x 中SQLExtendedFetch 已替换为 SQLFetchScroll
- APISQLExtendedFetch
- **是否支持**不支持
- **标准**弃用
- **作用**在 ODBC 3.x 中SQLExtendedFetch 已替换为 SQLFetchScroll
- API: SQLSetPos
- **是否支持**: 支持
- **标准**: ODBC
- **作用**: 设置行集中的游标位置,并允许应用程序更新数据集中的行
- APISQLSetPos
- **是否支持**支持
- **标准**ODBC
- **作用**设置行集中的游标位置,并允许应用程序更新数据集中的行
- API: SQLBulkOperations
- **是否支持**: 不支持
- **标准**: ODBC
- **作用**: 执行批量插入和批量书签操作,包括更新、删除和按书签提取
- APISQLBulkOperations
- **是否支持**不支持
- **标准**ODBC
- **作用**执行批量插入和批量书签操作,包括更新、删除和按书签提取
#### 检索错误或诊断信息
- API: SQLError
- **是否支持**: 不支持
- **标准**: 弃用
- **作用**: 在 ODBC 3.x 中ODBC 2.x 函数 SQLError 已替换为 SQLGetDiagRec
- APISQLError
- **是否支持**不支持
- **标准**弃用
- **作用**在 ODBC 3.x 中ODBC 2.x 函数 SQLError 已替换为 SQLGetDiagRec
- API: SQLGetDiagField
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 返回附加诊断信息(单条诊断结果)
- APISQLGetDiagField
- **是否支持**支持
- **标准**ISO 92
- **作用**返回附加诊断信息(单条诊断结果)
- API: SQLGetDiagRec
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 返回附加诊断信息(多条诊断结果)
- APISQLGetDiagRec
- **是否支持**支持
- **标准**ISO 92
- **作用**返回附加诊断信息(多条诊断结果)
#### 获取有关数据源的系统表项的信息
- API: SQLColumnPrivileges
- **是否支持**: 不支持
- **标准**: ODBC
- **作用**: 用于检索指定表中列的权限信息,如哪些用户或角色拥有对特定列的读取、插入、更新或删除权限
- APISQLColumnPrivileges
- **是否支持**不支持
- **标准**ODBC
- **作用**用于检索指定表中列的权限信息,如哪些用户或角色拥有对特定列的读取、插入、更新或删除权限
- API: SQLColumns
- **是否支持**: 支持
- **标准**: X/Open
- **作用**: 返回指定表中的列名列表
- APISQLColumns
- **是否支持**支持
- **标准**X/Open
- **作用**返回指定表中的列名列表
- API: SQLForeignKeys
- **是否支持**: 不支持
- **标准**: ODBC
- **作用**: 检索外键关系的详细信息
- APISQLForeignKeys
- **是否支持**不支持
- **标准**ODBC
- **作用**检索外键关系的详细信息
- API: SQLPrimaryKeys
- **是否支持**: 支持
- **标准**: ODBC
- **作用**: 返回构成表主键的列名列表
- APISQLPrimaryKeys
- **是否支持**支持
- **标准**ODBC
- **作用**返回构成表主键的列名列表
- API: SQLSpecialColumns
- **是否支持**: 不支持
- **标准**: X/Open
- **作用**: 返回数据库中特殊列的信息,如唯一键或索引列
- APISQLSpecialColumns
- **是否支持**不支持
- **标准**X/Open
- **作用**返回数据库中特殊列的信息,如唯一键或索引列
- API: SQLStatistics
- **是否支持**: 不支持
- **标准**: ISO 92
- **作用**: 返回关于表的统计信息,如行数、列数、平均行宽等
- APISQLStatistics
- **是否支持**不支持
- **标准**ISO 92
- **作用**返回关于表的统计信息,如行数、列数、平均行宽等
- API: SQLTablePrivileges
- **是否支持**: 不支持
- **标准**: ODBC
- **作用**: 返回用户在特定表上的权限如SELECT、INSERT、UPDATE等
- APISQLTablePrivileges
- **是否支持**不支持
- **标准**ODBC
- **作用**返回用户在特定表上的权限如SELECT、INSERT、UPDATE等
- API: SQLTables
- **是否支持**: 支持
- **标准**: X/Open
- **作用**: 返回存储在数据源的当前数据库中的表信息
- APISQLTables
- **是否支持**支持
- **标准**X/Open
- **作用**返回存储在数据源的当前数据库中的表信息
- API: SQLProcedures
- **是否支持**: 不支持
- **标准**: ODBC
- **作用**: 返回数据库中可用的存储过程信息,包括名称和类型
- APISQLProcedures
- **是否支持**不支持
- **标准**ODBC
- **作用**返回数据库中可用的存储过程信息,包括名称和类型
- API: SQLProcedureColumns
- **是否支持**: 不支持
- **标准**: ODBC
- **作用**: 返回存储过程的列信息,包括输入输出参数的详细信息
- APISQLProcedureColumns
- **是否支持**不支持
- **标准**ODBC
- **作用**返回存储过程的列信息,包括输入输出参数的详细信息
#### 执行事务
- API: SQLTransact
- **是否支持**: 不支持
- **标准**: 弃用
- **作用**: 在 ODBC 3.x 中ODBC 2.x 函数 SQLTransact 已替换为 SQLEndTran
- APISQLTransact
- **是否支持**不支持
- **标准**弃用
- **作用**在 ODBC 3.x 中ODBC 2.x 函数 SQLTransact 已替换为 SQLEndTran
- API: SQLEndTran
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 用于提交或回滚事务。TDengine 是非事务性的,因此 SQLEndTran 函数最多只能模拟提交或回滚操作。如果有任何未完成的连接或语句无论是提交commit还是回滚rollback都不会成功
- APISQLEndTran
- **是否支持**支持
- **标准**ISO 92
- **作用**用于提交或回滚事务。TDengine 是非事务性的,因此 SQLEndTran 函数最多只能模拟提交或回滚操作。如果有任何未完成的连接或语句无论是提交commit还是回滚rollback都不会成功
#### 终止连接
- API: SQLDisconnect
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 断开数据库连接
- APISQLDisconnect
- **是否支持**支持
- **标准**ISO 92
- **作用**断开数据库连接
- API: SQLFreeHandle
- **是否支持**: 支持
- **标准**: ISO 92
- **作用**: 释放与特定环境、连接、语句或描述符句柄关联的资源
- APISQLFreeHandle
- **是否支持**支持
- **标准**ISO 92
- **作用**释放与特定环境、连接、语句或描述符句柄关联的资源
- API: SQLFreeConnect
- **是否支持**: 不支持
- **标准**: 弃用
- **作用**: 在 ODBC 3.x 中ODBC 2.0 函数 SQLFreeConnect 已替换为 SQLFreeHandle
- APISQLFreeConnect
- **是否支持**不支持
- **标准**弃用
- **作用**在 ODBC 3.x 中ODBC 2.0 函数 SQLFreeConnect 已替换为 SQLFreeHandle
- API: SQLFreeEnv
- **是否支持**: 不支持
- **标准**: 弃用
- **作用**: 在 ODBC 3.x 中ODBC 2.0 函数 SQLFreeEnv 已替换为 SQLFreeHandle
- APISQLFreeEnv
- **是否支持**不支持
- **标准**弃用
- **作用**在 ODBC 3.x 中ODBC 2.0 函数 SQLFreeEnv 已替换为 SQLFreeHandle
- API: SQLFreeStmt
- **是否支持**: 支持
- **标准**: ODBC
- **作用**: 结束语句处理,丢弃挂起的结果,并且可以选择释放与语句句柄关联的所有资源
- APISQLFreeStmt
- **是否支持**支持
- **标准**ODBC
- **作用**结束语句处理,丢弃挂起的结果,并且可以选择释放与语句句柄关联的所有资源
- API: SQLCloseCursor
- **是否支持**: 支持
- **标准**: ODBC
- **作用**: 关闭与当前语句句柄关联的游标,并释放游标所使用的所有资源
- APISQLCloseCursor
- **是否支持**支持
- **标准**ODBC
- **作用**关闭与当前语句句柄关联的游标,并释放游标所使用的所有资源

View File

@ -75,12 +75,12 @@ http://<fqdn>:<port>/rest/sql/[db_name][?tz=timezone[&req_id=req_id][&row_with_m
参数说明:
- fqdn: 集群中的任一台主机 FQDN 或 IP 地址。
- port: 配置文件中 httpPort 配置项,缺省为 6041。
- db_name: 可选参数,指定本次所执行的 SQL 语句的默认数据库库名。
- tz: 可选参数,指定返回时间的时区,遵照 IANA Time Zone 规则,如 `America/New_York`。
- req_id: 可选参数,指定请求 id可以用于 tracing。
- row_with_meta: 可选参数,指定是否每行数据都携带列名,缺省为 false。3.3.2.0 版本开始支持)
- fqdn集群中的任一台主机 FQDN 或 IP 地址。
- port配置文件中 httpPort 配置项,缺省为 6041。
- db_name可选参数,指定本次所执行的 SQL 语句的默认数据库库名。
- tz可选参数,指定返回时间的时区,遵照 IANA Time Zone 规则,如 `America/New_York`。
- req_id可选参数,指定请求 id可以用于 tracing。
- row_with_meta可选参数,指定是否每行数据都携带列名,缺省为 false。3.3.2.0 版本开始支持)
例如:`http://h1.taos.com:6041/rest/sql/test` 是指向地址为 `h1.taos.com:6041` 的 URL并将默认使用的数据库库名设置为 `test`。

View File

@ -490,21 +490,21 @@ description: TDengine 服务端的错误码列表和详细说明
| 0x80002802 | Invalid function para type | 函数输入参数类型不正确。函数输入参数要求为数值类型,但是用户所给参数为字符串。比如 SUM("abc")。 | 调整函数参数输入为正确类型 |
| 0x80002803 | Invalid function para value | 函数输入参数取值不正确。函数输入参数范围不正确。比如 SAMPLE 函数第二个参数指定采样个数范围为 [1, 1000], 如果不在这个范围内会会报错。 | 调整函数参数输入为正确取值。 |
| 0x80002804 | Not builtin function | 函数非内置函数。内置函数不在的哈希表中会报错,用户应该很少遇见这个问题,否则是内部内置函数哈希初始化的时候出错或者写坏。 | 客户应该不会遇到,如果遇到,说明程序有 bug咨询开发人员。 |
| 0x80002805 | Duplicate timestamps not allowed in function | 函数输入主键列有重复时间戳。对某些依赖时间线顺序函数做超级表查询时所有子表数据会按照时间戳进行排序后合并为一条时间线进行计算因此子表合并后的时间戳可能会出现重复导致某些计算没有意义而报错。涉及到的函数有CSUMDERIVATIVEDIFFIRATEMAVGSTATECOUNTSTATEDURATIONTWA | 如果需要对超级表查询并且使用这些依赖时间线顺序函数时,确保子表中不存在重复时间戳数据。 |
| 0x80002805 | Duplicate timestamps not allowed in function | 函数输入主键列有重复时间戳。对某些依赖时间线顺序函数做超级表查询时所有子表数据会按照时间戳进行排序后合并为一条时间线进行计算因此子表合并后的时间戳可能会出现重复导致某些计算没有意义而报错。涉及到的函数有CSUM、DERIVATIVE、DIFF、IRATE、MAVG、STATECOUNT、STATEDURATION、TWA | 如果需要对超级表查询并且使用这些依赖时间线顺序函数时,确保子表中不存在重复时间戳数据。 |
## udf
| 错误码 | 错误描述 | 可能的出错场景或者可能的原因 | 建议用户采取的措施 |
| ---------- | ---------------------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------- |
| 0x80002901 | udf is stopping | dnode 退出时,收到 udf 调用 | 停止执行 udf 查询 |
| 0x80002902 | udf pipe read error | taosd读取udfd pipe发生错误 | udfd异常退出1c udf崩溃 2udfd崩溃 |
| 0x80002903 | udf pipe connect error | taosd建立到udfd的管道连接时发生错误 | 1)taosd对应的udfd未启动。重启taosd |
| 0x80002904 | udf pip not exist | udf建立调用拆除三个阶段两个阶段中间发生连接错误导致连接消失后续阶段继续执行 | udfd异常退出1c udf崩溃 2udfd崩溃 |
| 0x80002905 | udf load failure | udfd加载udf时错误 | 1mnode中udf不存在 2udf 加载出错。查看日志 |
| 0x80002902 | udf pipe read error | taosd 读取 udfd pipe发生错误 | udfd 异常退出1. c udf 崩溃 2. udfd 崩溃 |
| 0x80002903 | udf pipe connect error | taosd 建立到 udfd 的管道连接时,发生错误 | 1. taosd 对应的 udfd 未启动。重启 taosd |
| 0x80002904 | udf pip not exist | udf 建立,调用,拆除三个阶段,两个阶段中间发生连接错误,导致连接消失,后续阶段继续执行 | udfd 异常退出1. c udf 崩溃 2. udfd 崩溃 |
| 0x80002905 | udf load failure | udfd 加载 udf 时错误 | 1.mnode 中 udf 不存在 2. udf 加载出错。查看日志 |
| 0x80002906 | udf invalid function input | udf 检查输入 | udf 函数不接受输入,如输入列类型错误 |
| 0x80002907 | udf invalid bufsize | udf 聚合函数中间结果大于创建udf中指定的 bufsize | 增大 bufSize或者降低中间结果大小 |
| 0x80002908 | udf invalid output type | udf 输出的类型和创建 udf 中指定的类型 | 修改 udf或者创建 udf 的类型,使得结果相同 |
| 0x80002909 | udf program language not supported | udf编程语言不支持 | 使用支持的语言,当前支持cpython |
| 0x80002909 | udf program language not supported | udf 编程语言不支持 | 使用支持的语言,当前支持 c、python |
| 0x8000290A | udf function execution failure | udf 函数执行错误,如返回错误的行数 | 具体查看错误日志 |

View File

@ -19,9 +19,7 @@ toc_max_heading_level: 4
在面对亿万级别的点位信息时,任何微小的数据处理逻辑错误或冗余都可能导致性能瓶颈。得益于全球社区爱好者的共同努力、超过 53 万个的装机实例部署以及在极端条件下的严格验证TDengine 在功能和性能方面均达到顶尖水平。在车联网领域TDengine 的核心价值体现在以下几个方面。
- 便于采集作为物联网的一个分支车联网的技术特点与之一致。TDengine配备了可视化采集界面用户无须编写代码即可轻松将Kafka、MQTT等通用消息中间件中
的数据导入数据库。此外,提供的可视化性能指标看板大大简化了数据接入和管理
的工作流程。
- 便于采集作为物联网的一个分支车联网的技术特点与之一致。TDengine 配备了可视化采集界面,用户无须编写代码即可轻松将 Kafka、MQTT 等通用消息中间件中的数据导入数据库。此外,提供的可视化性能指标看板大大简化了数据接入和管理的工作流程。
- 数据存储车联网数据具有高度的相关性例如特定车型的配置信息或同一车辆上不同点位的状态数据。TDengine 的设计理念完美契合车联网的需求采用“一车一表”的模式简化了数据存储管理的复杂性。结合云原生架构、冷热数据分离、列式存储以及动态扩容包括横向、纵向扩容和动态添加存储空间等技术TDengine 在数据存储的性能和成本控制方面表现出色。
- 查询分析TDengine 作为一个开放且简洁的时序大数据平台,提供了丰富的 API兼容各种分析工具、编程语言和 BI 系统,如 Matlab、R、永洪 BI 等。TDengine 主要采用 SQL易于学习和使用支持状态、计数、时间、事件及会话窗口等多种分析模式并内置了 70 多个基础算子,足以应对日常的分析需求。对于更专业的算法分析,用户可通过 C 或 Python 语言开发 UDF并将其集成到 TDengine 中。
@ -57,8 +55,4 @@ TDengine能够无缝地从外部消息队列如MQTT、Kafka中采集并过
方案特点如下。
- 高性能:该项目服务于一万辆车,数据量呈现快速增长态势,日均写入记录高达约 10 亿条。项目对聚合查询的高效性和存储压缩性能进行了严格的验证,无损压缩率可达 4%。这证明了 TDengine 在处理大规模数据时的卓越性能。
- 乱序治理尽管消息队列的使用难以避免乱序问题的出现尤其是在离线数据补传的场景中乱序数据往往表现为时间戳早于当前车辆存储记录的时间戳。这种乱序写入会导致大量存储碎片的产生严重时会影响数据库的性能。TDengine 巧妙地解决了这一行业难题,支持在线整理乱序写入,确保数据库性能不受影响。同时,对于异常数据段的删除,也可以通过在线整理实现真正的数据存储空间释放,而不仅仅是索引屏蔽。
- 数据应用:鉴于车辆运营涉及食品安全的特殊性,实时监控当前车辆位置信息显
得尤为重要。TDengine 具备缓存实时数据的功能,无论数据库中已存储多少数据,
仍能保持稳定的性能,毫秒级响应最新数据请求,充分发挥时序数据库的实时特
性。业务中还需要进行历史轨迹回放、行驶里程分析、时间分段分析等多项操作,
TDengine 的强大性能和多功能性为业务分析提供了无限可能。
- 数据应用鉴于车辆运营涉及食品安全的特殊性实时监控当前车辆位置信息显得尤为重要。TDengine 具备缓存实时数据的功能无论数据库中已存储多少数据仍能保持稳定的性能毫秒级响应最新数据请求充分发挥时序数据库的实时特性。业务中还需要进行历史轨迹回放、行驶里程分析、时间分段分析等多项操作TDengine 的强大性能和多功能性为业务分析提供了无限可能。

View File

@ -18,10 +18,8 @@ toc_max_heading_level: 4
储能系统的核心组件是电芯,对其实时工作参数(如电流、电压、温度、内阻)的监控对于保障储能系统的安全和可靠运行至关重要。如何有效地存储和分析这些海量的测点和数据,已成为储能领域不得不正视的技术难题。这些难题主要体现在如下几个方面。
- 测点量大:分布式光伏组件众多,大型储能系统中电芯数量庞大,需要监测的测点数从数十万到数千万不等。加之较高的采集频率,每天产生的海量监测数据需要进行长期持久化存储。
- 数据接入难:电网调度中心须实时监控分布式光伏电站和储能系统的运行状况,但由于分布式光伏电站目前主要通过配网侧接入电网,数据接入过程面临挑战。
另外,由于营销系统与调度中心的信息化水平存在差异,数据接入过程中存在客观难题:数据提取规则复杂,测点数量庞大,传统的数据采集方案资源消耗大。
- 数据分发难:分布式光伏电站的运行数据一旦接入省级调度中心,就需要迅速分发至各地市的生产区以驱动后续业务。如何实现快速且高效的数据分发,是客户
需要解决的一个棘手问题。
- 数据接入难:电网调度中心须实时监控分布式光伏电站和储能系统的运行状况,但由于分布式光伏电站目前主要通过配网侧接入电网,数据接入过程面临挑战。另外,由于营销系统与调度中心的信息化水平存在差异,数据接入过程中存在客观难题:数据提取规则复杂,测点数量庞大,传统的数据采集方案资源消耗大。
- 数据分发难:分布式光伏电站的运行数据一旦接入省级调度中心,就需要迅速分发至各地市的生产区以驱动后续业务。如何实现快速且高效的数据分发,是客户需要解决的一个棘手问题。
- 聚合分析难:分布式光伏电站的运行数据须根据电站在电网拓扑中的具体隶属关系(如电站隶属于某台配电变压器、馈线、主网变压器)进行多维度的聚合分析。现有技术方案在提供高效聚合分析手段方面存在不足,如性能低下、耗时过长等问题尤为突出。
## TDengine在新能源中的核心价值
@ -31,8 +29,7 @@ toc_max_heading_level: 4
- 支持海量测点TDengine 能够支持高达 10 亿个时间线,充分满足分布式光伏电站和储能系统的数据处理需求。
- 高性能面对千万级测点的分钟级数据采集场景调度业务对时序数据库的写入性能和低延迟有着严苛的要求。TDengine 凭借“一个数据采集点一张表”的创新设计理念,实现了卓越的写入性能,完全契合业务需求。
- 最新状态数据快速查询在千万级测点数据写入后调度业务需要时序数据库能够迅速查询各设备的最新状态数据以驱动后续业务逻辑。TDengine 通过超级表和内置的高速读缓存设计,使用户能够高效查询光伏设备和储能电芯的最新运行数据,使运维人员能够实时获取并监控设备状态,从而提高运维效率。
- 数据订阅与分发针对需要实时数据分发的业务场景TDengine内置的消息队列功能从机制上解决了大量数据即时分发的难题简化了整个系统架构的复
杂性。
- 数据订阅与分发针对需要实时数据分发的业务场景TDengine 内置的消息队列功能从机制上解决了大量数据即时分发的难题,简化了整个系统架构的复杂性。
- 开放的生态TDengine 易于与其他系统集成,兼容多种大数据框架,支持数据的整合与分析,为开发者提供了一个灵活的生态平台。
## TDengine 在新能源中的应用

View File

@ -28,7 +28,7 @@ toc_max_heading_level: 4
## TDengine在智慧油田中的应用
在一项致力于提升大型油田生产管理水平的技术方案中,客户设定了实现多个关键领域技术集成的目标。这些领域包括但不限于如下这些
在一项致力于提升大型油田生产管理水平的技术方案中,客户设定了实现多个关键领域技术集成的目标。这些领域包括但不限于如下这些
- 自动化采集与控制:在生产现场构建先进的自动化系统,以实现数据的实时采集和精确控制,提升生产过程的自动化水平。
- 生产视频系统:整合高效的视频监控系统,对生产过程进行全面监控,确保作业安全,并为管理层提供实时、直观的决策支持。
- 工业物联网:运用物联网技术,将各种传感器和设备无缝连接,实现数据的远程采集与分析,提高油田运营的透明度和智能化程度。

View File

@ -15,11 +15,9 @@ toc_max_heading_level: 4
![IEC 62264-1 5 层架构模型](./manufacture-1.png)
随着工业数字化的巨浪席卷而来,我们见证了数据采集量的爆炸式增长和分析需求的日益复杂化,随之而来的问题和挑战也愈发凸显。
- 海量设备数据采集:在过去的十余年里,制造业的数字化进程取得了显著进展。工厂的数据采集点从传统的数千个激增至数十万甚至数百万个。面对如此庞大的
数据采集需求,传统的实时数据库已显得力不从心。
- 海量设备数据采集:在过去的十余年里,制造业的数字化进程取得了显著进展。工厂的数据采集点从传统的数千个激增至数十万甚至数百万个。面对如此庞大的数据采集需求,传统的实时数据库已显得力不从心。
- 动态扩容:随着数据的逐步接入,初期的硬件配置往往较为有限。随着业务量的增加和数据量的上升,硬件资源必须迅速扩展以满足业务的正常运行。然而,一旦系统上线运行,通常不允许进行停机扩容,这就要求系统在设计时就要考虑到未来的扩展性。
- 数据关联与多维分析:传统工业实时数据库通常只包含几个固定的字段,如变量名、变量值、质量戳和时间戳,缺乏信息间的关联性,这使得复杂的多维分析变
得难以执行。
- 数据关联与多维分析:传统工业实时数据库通常只包含几个固定的字段,如变量名、变量值、质量戳和时间戳,缺乏信息间的关联性,这使得复杂的多维分析变得难以执行。
- 截面查询与插值查询:为了满足报表和其他统计需求,系统需要支持历史截面查询以及按指定时间间隔进行的线性插值查询。
- 第三方系统数据库对接:除了设备数据以外,还须采集来自各个生产系统的数据,这些系统通常位于过程监控层或生产管理层。这就要求系统能够实时采集数据、迁移历史数据,并在网络断开时能够断线续传。除了 API 以外常见的对接方式还包括数据库对接例如与LIMIS对接采集其关系型数据库中存储的时序数据或与第三方生产数据库如AVEVA PI System或Wonderware系统对接获取实时、历史和报警数据。
- 与SCADASupervisory Control and Data Acquisition监控控制与数据采集系统对接SCADA 系统作为过程监控层的核心,汇集了站内和厂区的所有生产数据,并提供了直观易用的开发、运行和管理界面。然而,其自带的传统实时数据库在分析能力和高密度点位容量上存在限制,通常仅支持约 1 万个点位。因此,将 SCADA 系统与性能更优越的数据库相结合,充分发挥双方的优势,通过面向操作技术层的模块化组态开发,为工业控制系统注入新的活力,已成为工业数字化发展的重要方向。
@ -58,7 +56,6 @@ toc_max_heading_level: 4
- 统计意义的降采样同步TDengine 利用流计算技术实现了具有统计意义的降采样数据同步。通过这种方式可以在不损失数据精度的前提下对数据进行降采样处理确保即使在数据时间颗粒度增大的情况下也能保持数据的准确性。流计算的使用方式简便无须复杂配置客户只须根据自己的需求编写SQL即可实现。
- 订阅式传输TDengine 采用了类似 Kafka 的消息订阅方式进行数据同步,相较于传统的周期性同步和普通订阅访问,这种方式实现了负载隔离和流量削峰,提高了同步的稳定性和效率。消息订阅机制遵循至少一次消费原则,确保在网络断线故障恢复后,能够从断点处继续消费数据,或者从头开始消费,以保证消费者能够接收到完整的生产数据。
- 操作行为同步TDengine 能够将操作行为同步到中心端,确保设备故障或人为对边缘侧数据的修改和删除操作能够实时反映到中心侧,维护了数据的一致性。
- 数据传输压缩在数据传输过程中TDengine实现了高达20%的数据压缩率,结合流计算的降采样同步,显著降低了同步过程对带宽的占用,提高了数据传输
效率。
- 数据传输压缩在数据传输过程中TDengine 实现了高达 20% 的数据压缩率,结合流计算的降采样同步,显著降低了同步过程对带宽的占用,提高了数据传输效率。
- 多种同步方式TDengine 支持多对一、一对多以及多对多的数据同步模式,满足不同场景下的数据同步需求。
- 支持双活:数据中心侧可实现异地灾备。边缘侧的 TDengine 或第三方客户端能够根据集团中心侧的 TDengine 状态进行智能连接。若主 TDengine 集群发生故障,无法对外提供服务,异地备用的 TDengine 集群将立即激活,接管所有客户端的访问连接,包括写入和查询功能。一旦主 TDengine 集群恢复正常,备用集群会将历史缓存和实时数据同步回主集群,整个过程对客户端透明,无须人工干预。

View File

@ -16,8 +16,7 @@ toc_max_heading_level: 4
在时序数据处理领域,金融机构面临着一系列核心需求与挑战,这些需求与挑战不仅关系到日常运营的效率,还直接影响到决策的准确性和业务的创新能力。
- 高性能写入:金融机构需要的是一个能够实时处理巨量数据流的平台。随着交易活动的频繁和市场数据的不断更新,平台必须能够每秒处理数以亿计的数据点,
确保数据的即时性和完整性,以支持实时的交易决策和风险管理。
- 高性能写入:金融机构需要的是一个能够实时处理巨量数据流的平台。随着交易活动的频繁和市场数据的不断更新,平台必须能够每秒处理数以亿计的数据点,确保数据的即时性和完整性,以支持实时的交易决策和风险管理。
- 强大的读取及数据消费性能:金融市场的特点是业务场景多变,这要求平台必须具备高度的数据读取和计算能力。例如,量化投资策略的研发依赖于实时行情数据和衍生数据的深度分析。平台需要支持高效的数据查询和计算,以便量化分析师能够快速回测模型、优化策略,并进行实时学习和调整。
- 计算性能:资产和衍生品的监控对平台的计算性能提出了更高的要求。金融机构需要能够执行复杂的统计分析、风险预测和价格发现等计算任务,以监控市场动态和评估投资组合的风险。这要求平台不仅要有强大的计算能力,还要能够提供快速响应,以支持实时决策和快速反应市场变化。

View File

@ -40,7 +40,7 @@ dnode 在 TDengine 集群中的唯一标识由其实例的 endpointEP
在集群内部,一个 vnode 由其所归属的 dnode 的 endpoint 和所属的 vgroup ID 唯一标识。管理节点负责创建和管理这些 vnode确保它们能够正常运行并协同工作。
**管理节点mnode**
mnode管理节点是 TDengine 集群中的核心逻辑单元,负责监控和维护所有 dnode的运行状态并在节点之间实现负载均衡如图 15-1 中的 M1、M2、M3 所示。作为元数据包括用户、数据库、超级表等的存储和管理中心mnode 也被称为 MetaNode。
mnode管理节点是 TDengine 集群中的核心逻辑单元,负责监控和维护所有 dnode的运行状态并在节点之间实现负载均衡如图 1 中的 M1、M2、M3 所示。作为元数据包括用户、数据库、超级表等的存储和管理中心mnode 也被称为 MetaNode。
为了提高集群的高可用性和可靠性TDengine 集群允许有多个(最多不超过 3 个mnode。这些 mnode 自动组成一个虚拟的 mnode 组共同承担管理职责。mnode 支持多副本,并采用 Raft 一致性协议来确保数据的一致性和操作的可靠性。在 mnode 集群中,任何数据更新操作都必须在 leader 节点上执行。
@ -49,7 +49,7 @@ mnode 集群的第 1 个节点在集群部署时自动创建,而其他节点
为了实现集群内部的信息共享和通信,每个 dnode 通过内部消息交互机制自动获取整个集群中所有 mnode 所在的 dnode 的 endpoint。
**计算节点qnode**
qnode计算节点是 TDengine 集群中负责执行查询计算任务的虚拟逻辑单元,同时也处理基于系统表的 show 命令。为了提高查询性能和并行处理能力,集群中可以配置多个 qnode这些 qnode 在整个集群范围内共享使用(如图 15-1 中的 Q1、Q2、Q3 所示)。
qnode计算节点是 TDengine 集群中负责执行查询计算任务的虚拟逻辑单元,同时也处理基于系统表的 show 命令。为了提高查询性能和并行处理能力,集群中可以配置多个 qnode这些 qnode 在整个集群范围内共享使用(如图 1 中的 Q1、Q2、Q3 所示)。
与 dnode 不同qnode 并不与特定的数据库绑定,这意味着一个 qnode 可以同时处理来自多个数据库的查询任务。每个 dnode 上最多有一个 qnode并由其所归属的 dnode 的endpoint 唯一标识。
@ -155,14 +155,14 @@ TDengine 集群可以容纳单个、多个甚至几千个数据节点。应用
<center> 图 2 TDengine 典型的操作流程 </center>
1. 应用通过 JDBC 或其他 API 接口发起插入数据的请求。
2. taosc 会检查缓存,看是否保存有该表所在数据库的 vgroup-info 信息。如果有,直接到第 4 步。如果没有taosc 将向 mnode 发出 get vgroup-info 请求。
3. mnode 将该表所在数据库的 vgroup-info 返回给 taosc。Vgroup-info 包含数据库的 vgroup 分布信息vnode ID 以及所在的 dnode 的 End Point如果副本数为 N就有 N 组 End Point还包含每个 vgroup 中存储数据表的 hash 范围。如果 taosc 迟迟得不到 mnode 回应,而且存在多个 mnodetaosc 将向下一个 mnode 发出请求。
4. taosc 会继续检查缓存,看是否保存有该表的 meta-data。如果有直接到第 6 步。如果没有taosc 将向 vnode 发出 get meta-data 请求。
5. vnode 将该表的 meta-data 返回给 taosc。Meta-data 包含有该表的 schema。
6. taosc 向 leader vnode 发起插入请求。
7. vnode 插入数据后,给 taosc 一个应答,表示插入成功。如果 taosc 迟迟得不到 vnode 的回应taosc 会认为该节点已经离线。这种情况下如果被插入的数据库有多个副本taosc 将向 vgroup 里下一个 vnode 发出插入请求。
8. taosc 通知 APP写入成功。
- 第 1 步:应用通过 JDBC 或其他 API 接口发起插入数据的请求。
- 第 2 步:taosc 会检查缓存,看是否保存有该表所在数据库的 vgroup-info 信息。如果有,直接到第 4 步。如果没有taosc 将向 mnode 发出 get vgroup-info 请求。
- 第 4 步:mnode 将该表所在数据库的 vgroup-info 返回给 taosc。Vgroup-info 包含数据库的 vgroup 分布信息vnode ID 以及所在的 dnode 的 End Point如果副本数为 N就有 N 组 End Point还包含每个 vgroup 中存储数据表的 hash 范围。如果 taosc 迟迟得不到 mnode 回应,而且存在多个 mnodetaosc 将向下一个 mnode 发出请求。
- 第 4 步:taosc 会继续检查缓存,看是否保存有该表的 meta-data。如果有直接到第 6 步。如果没有taosc 将向 vnode 发出 get meta-data 请求。
- 第 5 步:vnode 将该表的 meta-data 返回给 taosc。Meta-data 包含有该表的 schema。
- 第 6 步:taosc 向 leader vnode 发起插入请求。
- 第 7 步:vnode 插入数据后,给 taosc 一个应答,表示插入成功。如果 taosc 迟迟得不到 vnode 的回应taosc 会认为该节点已经离线。这种情况下如果被插入的数据库有多个副本taosc 将向 vgroup 里下一个 vnode 发出插入请求。
- 第 8 步:taosc 通知 APP写入成功。
对于第二步taosc 启动时,并不知道 mnode 的 End Point因此会直接向配置的集群对外服务的 End Point 发起请求。如果接收到该请求的 dnode 并没有配置 mnode该 dnode 会在回复的消息中告知 mnode EP 列表,这样 taosc 会重新向新的 mnode 的 EP 发出获取 meta-data 的请求。
@ -315,7 +315,7 @@ TDengine 采用了一种数据驱动的策略来实现缓存数据的持久化
每个数据文件块(以 .data 结尾)都配有一个索引文件(以 .head 结尾),该索引文件包含每张表的各个数据文件块的摘要信息,记录了每个数据文件块在数据文件中的偏移量、数据的起始时间和结束时间等信息,以便于快速定位所需数据。此外,每个数据文件块还有一个与之关联的 last 文件(以 .last 结尾),该文件旨在防止数据文件块在落盘时发生碎片化。如果某张表落盘的记录条数未达到数据库参数 minRows每块最小记录条数的要求这些记录将首先存储在 last 文件中,待下次落盘时,新落盘的记录将与 last文件中的记录合并然后再写入数据文件块。
在数据写入硬盘的过程中,是否对数据进行压缩取决于数据库参数 comp 的设置。TDengine 提供了 3 种压缩选项—无压缩、一级压缩和二级压缩,对应的 comp 值分别为 0、1 和 2。一级压缩会根据数据类型采用相应的压缩算法如 delta-delta 编码、simple8B 方法、zig-zag 编码、LZ4 等。二级压缩则在一级压缩的基础上进一步使用通用压缩算法,以实现更高的压缩率。
在数据写入硬盘的过程中,是否对数据进行压缩取决于数据库参数 comp 的设置。TDengine 提供了 3 种压缩选项—无压缩、一级压缩和二级压缩,对应的 comp 值分别为 0、1 和 2。一级压缩会根据数据类型采用相应的压缩算法如 delta-delta 编码、simple8B 编码、zig-zag 编码、LZ4 等。二级压缩则在一级压缩的基础上进一步使用通用压缩算法,以实现更高的压缩率。
### 预计算
@ -325,7 +325,7 @@ TDengine 采用了一种数据驱动的策略来实现缓存数据的持久化
### 多级存储与对象存储
说明:多级存储功能仅企业版支持,从 2.0.16.0 版本开始提供
说明:多级存储功能仅企业版支持。
在默认配置下TDengine 会将所有数据保存在 /var/lib/taos 目录下,而且每个 vnode 的数据文件保存在该目录下的不同目录。为扩大存储空间,尽量减少文件读取的瓶颈,提高数据吞吐率 TDengine 可通过配置系统参数 dataDir 让多个挂载的硬盘被系统同时使用。

View File

@ -127,6 +127,6 @@ TDengine 针对不同类型的缓存对象采用了相应的缓存管理策略
![缓存方案](./cache.png)
- 元数据缓存meta data包括数据库、超级表、用户、节点、视图、虚拟节点等信息以及表的 schema 和其所在虚拟节点的映射关系。通过在 taosc 缓存元数据可以避免频繁地向 mnode/vnode 请求元数据。taosc 对元数据的缓存采用固定大小的缓存空间,先到先得,直到缓存空间用完。当缓存空间用完时,缓存会被进行部分淘汰处理,用来缓存新进请求所需要的元数据。
- 时序数据缓存time series data时序数据首先被缓存在 vnode 的内存中,以SkipList 形式组织,当达到落盘条件后,将时序数据进行压缩,写入数据存储文件
- 时序数据缓存time series data时序数据首先被缓存在 vnode 的内存中,以 skipList 形式组织,当达到落盘条件后,将时序数据进行压缩,写入数据存储文件
中,并从缓存中清除。
- 最新数据缓存last/last_row对时序数据中的最新数据进行缓存可以提高最新数据的查询效率。最新数据以子表为单元组织成 KV 形式其中K 是子表 IDV 是该子表中每列的最后一个非 NULL 以及最新的一行数据。

View File

@ -13,8 +13,7 @@ TDengine 流计算的架构如下图所示。当用户输入用于创建流的 S
mnode 包含与流计算相关的如下 4 个逻辑模块。
- 任务调度,负责将逻辑执行计划转化为物理执行计划,并下发到每个 vnode。
- meta store负责存储流计算任务的元数据信息以及流任务相应的 DAG 信息。
- 检查点调度负责定期生成检查点checkpoint事务并下发到各 source task
任务)。
- 检查点调度负责定期生成检查点checkpoint事务并下发到各 source task源任务
- exec 监控,负责接收上报的心跳、更新 mnode 中各任务的执行状态,以及定期监控检查点执行状态和 DAG 变动信息。
此外mnode 还承担着向流计算任务下发控制命令的重要角色,这些命令包括但不限于暂停、恢复执行、删除流任务及更新流任务的上下游信息等。
@ -67,7 +66,7 @@ TDengine 的流计算功能允许根据记录的事件时间将数据划分到
![流计算任务组成](./streamtask.png)
按照流任务承担任务的不同,可将其划分为 3 个类别source task源任务、agg task聚合任务和 sink task写回任务
按照流任务承担任务的不同,可将其划分为 3 个类别source task源任务、agg task聚合任务和 sink task写回任务
### source task

View File

@ -11,7 +11,7 @@ TDengine 通过日志文件记录系统运行状态,帮助用户监控系统
### 普通日志实现逻辑
- 普通日志分同步和异步两种方式,同步立即写入日志文件,异步写入到 buff 里,然后定时写入日志文件。
- 异步方式日志文件缓存在循环 buff 里, buff 的大小为 buffSize = 20 M。如果某次写buf 的日志大小大于buf 可用空间,本次日志会舍弃,日志里记录: ...Lost N lines here...
- 异步方式日志文件缓存在循环 buff 里, buff 的大小为 buffSize = 20M。如果某次写 buf 的日志大小大于buf 可用空间,本次日志会舍弃,日志里记录 ...Lost N lines here...
![TDengine 日志循环buff](./normal_log1.png)
- 异步线程里每隔 1s 会更新磁盘信息用于判断是否有空间写日志
- 异步线程每隔 Interval 时间处理一次写入逻辑。写入规则如下:
@ -69,13 +69,13 @@ TDengine 通过日志文件记录系统运行状态,帮助用户监控系统
- 因为上报数据和删除文件里的上报内容没法作为一个原子操作,所以如果上报后还没删除数据就 crash可能导致下次重复上报重复上报的数据会覆盖并没丢失影响很小。
- 另外为了保证性能slow log thread 线程把慢 sql 日志写入临时文件缓存,只保证刷新到操作系统的磁盘缓冲区,并不真正每次都 fsync 到磁盘,所以如果机器断电,仍可能丢失数据。该异常出现概率很小,可以容忍此种情况下的数据丢失。
### 慢日志行为说明
- 慢日志一方面会记录到本地慢日志文件中,另一方面会通过 taosAdapter 发送到 taosKeeper 进行结构化存储(需打开 monitorr 开关)。
- 慢日志一方面会记录到本地慢日志文件中,另一方面会通过 taosAdapter 发送到 taosKeeper 进行结构化存储(需打开 monitor 开关)。
- 慢日志文件存储规则为:
- 慢日志文件一天一个,如果当天没有慢日志,没有当天的文件。
- 文件名为 taosSlowLog.yyyy-mm-ddtaosSlowLog.2024-08-02日志存储路径通过 logDir 配置。
- 多个客户端的日志存储在相应日志路径下的同一个 taosSlowLog.yyyy.mm.dd 文件里。
- 慢日志文件不自动删除,不压缩。
- 使用和普通日志文件相同的三个参数 logDir, minimalLogDirGB, asyncLog。另外两个参数 numOfLogLineslogKeepDays 不适用于慢日志。
- 使用和普通日志文件相同的三个参数 logDir、minimalLogDirGB、asyncLog。另外两个参数 numOfLogLines、logKeepDays 不适用于慢日志。
## 日志级别说明

View File

@ -7,20 +7,20 @@ description: 一些常见问题的解决方法汇总
如果 FAQ 中的信息不能够帮到您,需要 TDengine 技术团队的技术支持与协助,请将以下两个目录中内容打包:
1. /var/log/taos (如果没有修改过默认路径)
2. /etc/taos如果没有指定其他配置文件路径
1. `/var/log/taos` (如果没有修改过默认路径)
2. `/etc/taos` (如果没有指定其他配置文件路径)
附上必要的问题描述,包括使用的 TDengine 版本信息、平台环境信息、发生该问题的执行操作、出现问题的表征及大概的时间,在 [GitHub](https://github.com/taosdata/TDengine) 提交 issue。
为了保证有足够的 debug 信息,如果问题能够重复,请修改/etc/taos/taos.cfg 文件最后面添加一行“debugFlag 135"(不带引号本身),然后重启 taosd, 重复问题,然后再递交。也可以通过如下 SQL 语句,临时设置 taosd 的日志级别。
为了保证有足够的 debug 信息,如果问题能够重复,请修改 `/etc/taos/taos.cfg` 文件,最后面添加一行 `debugFlag 135`,然后重启 taosd, 重复问题,然后再递交。也可以通过如下 SQL 语句,临时设置 taosd 的日志级别。
```
alter dnode <dnode_id> 'debugFlag' '135';
```
其中 dnode_id 请从 show dnodes; 命令输出中获取。
其中 dnode_id 请从 `show dnodes` 命令输出中获取。
但系统正常运行时,请一定将 debugFlag 设置为 131否则会产生大量的日志信息降低系统效率。
但系统正常运行时,请一定将 debugFlag 设置为 `131`,否则会产生大量的日志信息,降低系统效率。
## 常见问题列表
@ -56,17 +56,17 @@ description: 一些常见问题的解决方法汇总
3. 在服务器,执行 `systemctl status taosd` 检查 *taosd* 运行状态。如果没有运行,启动 *taosd*
4. 确认客户端连接时指定了正确的服务器 FQDN (Fully Qualified Domain Name —— 可在服务器上执行 Linux/macOS 命令 hostname -f 获得FQDN 配置参考:[一篇文章说清楚 TDengine 的 FQDN](https://www.taosdata.com/blog/2020/09/11/1824.html)。
4. 确认客户端连接时指定了正确的服务器 FQDN (Fully Qualified Domain Name —— 可在服务器上执行 Linux/macOS 命令 `hostname -f` 获得FQDN 配置参考 [一篇文章说清楚 TDengine 的 FQDN](https://www.taosdata.com/blog/2020/09/11/1824.html)。
5. ping 服务器 FQDN如果没有反应请检查你的网络DNS 设置,或客户端所在计算机的系统 hosts 文件。如果部署的是 TDengine 集群,客户端需要能 ping 通所有集群节点的 FQDN。
6. 检查防火墙设置Ubuntu 使用 ufw statusCentOS 使用 firewall-cmd --list-port确保集群中所有主机在端口 6030/6041 上的 TCP/UDP 协议能够互通。
7. 对于 Linux 上的 JDBCODBC, Python, Go 等接口类似)连接, 确保*libtaos.so*在目录*/usr/local/taos/driver*里, 并且*/usr/local/taos/driver*在系统库函数搜索路径*LD_LIBRARY_PATH*
7. 对于 Linux 上的 JDBCODBC、Python、Go 等接口类似)连接,确保 *libtaos.so* 在目录 */usr/local/taos/driver* 里,并且 */usr/local/taos/driver* 在系统库函数搜索路径 *LD_LIBRARY_PATH*
8. 对于 macOS 上的 JDBCODBC, Python, Go 等接口类似)连接, 确保*libtaos.dylib*在目录*/usr/local/lib*里, 并且*/usr/local/lib*在系统库函数搜索路径*LD_LIBRARY_PATH*
8. 对于 macOS 上的 JDBCODBC、Python、Go 等接口类似)连接,确保 *libtaos.dylib* 在目录 */usr/local/lib* 里,并且 */usr/local/lib* 在系统库函数搜索路径 *LD_LIBRARY_PATH*
9. 对于 Windows 上的 JDBC, ODBC, Python, Go 等连接,确保*C:\TDengine\driver\taos.dll*在你的系统库函数搜索目录里 (建议*taos.dll*放在目录 _C:\Windows\System32_)
9. 对于 Windows 上的 JDBC、ODBC、Python、Go 等连接,确保 *C:\TDengine\driver\taos.dll* 在你的系统库函数搜索目录里 (建议 *taos.dll* 放在目录 _C:\Windows\System32_)
10. 如果仍不能排除连接故障
@ -75,7 +75,7 @@ description: 一些常见问题的解决方法汇总
检查服务器侧 TCP 端口连接是否工作:`nc -l {port}`
检查客户端侧 TCP 端口连接是否工作:`nc {hostIP} {port}`
- Windows 系统请使用 PowerShell 命令 Test-NetConnection -ComputerName \{fqdn} -Port \{port} 检测服务段端口是否访问
- Windows 系统请使用 PowerShell 命令 `Test-NetConnection -ComputerName \{fqdn} -Port \{port}` 检测服务段端口是否访问
11. 也可以使用 taos 程序内嵌的网络连通检测功能,来验证服务器和客户端之间指定的端口连接是否通畅:[运维指南](../../operation)。
@ -145,7 +145,7 @@ local_option: {
其含义是,在当前的命令行程序下,清空本机所有客户端生成的日志文件(resetLog),或修改一个特定模块的日志记录级别(只对当前命令行程序有效,如果 taos 命令行程序重启,则需要重新设置):
- value 的取值可以是131输出错误和警告日志135 输出错误、警告和调试日志),143 输出错误、警告、调试和跟踪日志)。
- value 的取值可以是131输出错误和警告日志、135 输出错误、警告和调试日志)、143 输出错误、警告、调试和跟踪日志)。
### 12. go 语言编写组件编译失败怎样解决?
@ -192,7 +192,7 @@ TDengine 中时间戳的时区总是由客户端进行处理,而与服务端
这个现象可能是因为 taosAdapter 没有被正确启动引起的,需要执行:```systemctl start taosadapter``` 命令来启动 taosAdapter 服务。
需要说明的是taosAdapter 的日志路径 path 需要单独配置,默认路径是 /var/log/taos ;日志等级 logLevel 有 8 个等级,默认等级是 info ,配置成 panic 可关闭日志输出。请注意操作系统 / 目录的空间大小,可通过命令行参数、环境变量或配置文件来修改配置,默认配置文件是 /etc/taos/taosadapter.toml 。
需要说明的是taosAdapter 的日志路径 path 需要单独配置,默认路径是 /var/log/taos ;日志等级 logLevel 有 8 个等级,默认等级是 info ,配置成 panic 可关闭日志输出。请注意操作系统 `/` 目录的空间大小,可通过命令行参数、环境变量或配置文件来修改配置,默认配置文件是 /etc/taos/taosadapter.toml 。
有关 taosAdapter 组件的详细介绍请看文档:[taosAdapter](../../reference/components/taosadapter/)
@ -254,19 +254,19 @@ launchctl limit maxfiles
TDengine 中的所有名称,包括数据库名、表名等都是区分大小写的,如果这些名称在程序或 TDengine CLI 中没有使用反引号(`)括起来使用,即使你输入的是大写的,引擎也会转化成小写来使用,如果名称前后加上了反引号,引擎就不会再转化成小写,会保持原样来使用。
### 23 在 TDengine CLI中查询字段内容不能完全显示出来怎么办
可以使用 \G 参数来竖式显示,如 show databases\G; (为了输入方便,在"\"后加 TAB 键,会自动补全后面的内容)
可以使用 `\G` 参数来竖式显示,如 `show databases\G;` (为了输入方便,在"\"后加 TAB 键,会自动补全后面的内容)
### 24 使用 taosBenchmark 测试工具写入数据查询很快,为什么我写入的数据查询非常慢?
TDengine 在写入数据时如果有很严重的乱序写入问题,会严重影响查询性能,所以需要在写入前解决乱序的问题。如果业务是从 kafka 消费写入,请合理设计消费者,尽可能的一个子表数据由一个消费者去消费并写入,避免由设计产生的乱序。
TDengine 在写入数据时如果有很严重的乱序写入问题,会严重影响查询性能,所以需要在写入前解决乱序的问题。如果业务是从 Kafka 消费写入,请合理设计消费者,尽可能的一个子表数据由一个消费者去消费并写入,避免由设计产生的乱序。
### 25 我想统计下前后两条写入记录之间的时间差值是多少?
使用 DIFF 函数,可以查看时间列或数值列前后两条记录的差值,非常方便,详细说明见 SQL 手册->函数->DIFF
### 26 遇到报错 “DND ERROR Version not compatible,cliver : 3000700swr wer : 3020300”
说明客户端和服务端版本不兼容,这里cliver的版本是3.0.7.0,server版本是 3.2.3.0。目前的兼容策略是前三位一致client 和 sever才能兼容。
### 26 遇到报错 “DND ERROR Version not compatible, client: 3000700, server: 3020300”
说明客户端和服务端版本不兼容,这里 client 的版本是 3.0.7.0server 版本是 3.2.3.0。目前的兼容策略是前三位一致client 和 sever 才能兼容。
### 27 修改 database 的 root 密码后,启动 taos 遇到报错 “failed to connect to server, reason: Authentication failure”
默认情况启动taos服务会使用系统默认的用户名root和密码尝试连接taosd在root密码修改后启用taos连接就需要指明用户名和密码例如: taos -h xxx.xxx.xxx.xxx -u root -p然后输入新密码进行连接。
默认情况启动taos服务会使用系统默认的用户名root和密码尝试连接 taosd root 密码修改后,启用 taos 连接就需要指明用户名和密码,例如 `taos -h xxx.xxx.xxx.xxx -u root -p`,然后输入新密码进行连接。
### 28 修改 database 的 root 密码后Grafana 监控插件 TDinsight 无数据展示
TDinsight 插件中展示的数据是通过 taosKeeper 和 taosAdapter 服务收集并存储于 TD 的 log 库中,在 root 密码修改后,需要同步更新 taosKeeper 和 taosAdapter 配置文件中对应的密码信息,然后重启 taosKeeper 和 taosAdapter 服务(注:若是集群需要重启每个节点上的对应服务)。
@ -277,11 +277,11 @@ TDinsight插件中展示的数据是通过taosKeeper和taosAdapter服务收集
### 30 为什么开源版 TDengine 的主进程会建立一个与公网的连接?
这个连接只会上报不涉及任何用户数据的最基本信息用于官方了解产品在世界范围内的分布情况进而优化产品提升用户体验具体采集项目为集群名、操作系统版本、cpu信息等。
该特性为可选配置项,在开源版中默认开启,具体参数为 telemetryReporting , 在官方文档中有做说明,链接如下:[参数简介](https://docs.taosdata.com/reference/components/taosd/#%E7%9B%91%E6%8E%A7%E7%9B%B8%E5%85%B3)
该特性为可选配置项,在开源版中默认开启,具体参数为 telemetryReporting在官方文档中有做说明,链接如下:[参数简介](https://docs.taosdata.com/reference/components/taosd/#%E7%9B%91%E6%8E%A7%E7%9B%B8%E5%85%B3)
您可以随时关闭该参数只需要在taos.cfg 中修改 telemetryReporting 为 0然后重启数据库服务即可。
代码位于:[点击此处](https://github.com/taosdata/TDengine/blob/62e609c558deb764a37d1a01ba84bc35115a85a4/source/dnode/mnode/impl/src/mndTelem.c)
代码位于[点击此处](https://github.com/taosdata/TDengine/blob/62e609c558deb764a37d1a01ba84bc35115a85a4/source/dnode/mnode/impl/src/mndTelem.c)
此外,对于安全性要求极高的企业版 TDengine Enterprise 来说,此参数不会工作。