Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
aa85effe
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
aa85effe
编写于
7月 15, 2022
作者:
D
dingbo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
docs: enhance handle exception
上级
14de9676
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
28 addition
and
15 deletion
+28
-15
docs/examples/java/src/main/java/com/taos/example/highvolume/SQLWriter.java
.../src/main/java/com/taos/example/highvolume/SQLWriter.java
+3
-3
docs/examples/python/fast_write_example.py
docs/examples/python/fast_write_example.py
+0
-0
docs/examples/python/sql_writer.py
docs/examples/python/sql_writer.py
+9
-1
docs/examples/python/stmt_writer.py
docs/examples/python/stmt_writer.py
+2
-0
docs/zh/07-develop/03-insert-data/05-high-volume.md
docs/zh/07-develop/03-insert-data/05-high-volume.md
+14
-11
未找到文件。
docs/examples/java/src/main/java/com/taos/example/highvolume/SQLWriter.java
浏览文件 @
aa85effe
...
@@ -154,11 +154,11 @@ public class SQLWriter {
...
@@ -154,11 +154,11 @@ public class SQLWriter {
createTables
();
createTables
();
executeSQL
(
sql
);
executeSQL
(
sql
);
}
else
{
}
else
{
logger
.
error
(
"E
rror e
xecute SQL: {}"
,
sql
);
logger
.
error
(
"Execute SQL: {}"
,
sql
);
throw
e
;
throw
e
;
}
}
}
catch
(
Throwable
throwable
)
{
}
catch
(
Throwable
throwable
)
{
logger
.
error
(
"E
rror e
xecute SQL: {}"
,
sql
);
logger
.
error
(
"Execute SQL: {}"
,
sql
);
throw
throwable
;
throw
throwable
;
}
}
}
}
...
@@ -179,7 +179,7 @@ public class SQLWriter {
...
@@ -179,7 +179,7 @@ public class SQLWriter {
try
{
try
{
stmt
.
executeUpdate
(
sql
);
stmt
.
executeUpdate
(
sql
);
}
catch
(
Throwable
throwable
)
{
}
catch
(
Throwable
throwable
)
{
logger
.
error
(
"E
rror e
xecute SQL: {}"
,
sql
);
logger
.
error
(
"Execute SQL: {}"
,
sql
);
throw
throwable
;
throw
throwable
;
}
}
}
}
...
...
docs/examples/python/
highvolume_faster_queu
e.py
→
docs/examples/python/
fast_write_exampl
e.py
浏览文件 @
aa85effe
文件已移动
docs/examples/python/sql_writer.py
浏览文件 @
aa85effe
...
@@ -72,11 +72,19 @@ class SQLWriter:
...
@@ -72,11 +72,19 @@ class SQLWriter:
if
error_code
==
0x362
or
error_code
==
0x218
:
if
error_code
==
0x362
or
error_code
==
0x218
:
self
.
create_tables
()
self
.
create_tables
()
else
:
else
:
self
.
log
.
error
(
"Execute SQL: %s"
,
sql
)
raise
e
raise
e
except
BaseException
as
baseException
:
self
.
log
.
error
(
"Execute SQL: %s"
,
sql
)
raise
baseException
def
create_tables
(
self
):
def
create_tables
(
self
):
sql
=
"CREATE TABLE "
sql
=
"CREATE TABLE "
for
tb
in
self
.
_tb_values
.
keys
():
for
tb
in
self
.
_tb_values
.
keys
():
tag_values
=
self
.
_tb_tags
[
tb
]
tag_values
=
self
.
_tb_tags
[
tb
]
sql
+=
"IF NOT EXISTS "
+
tb
+
" USING meters TAGS "
+
tag_values
+
" "
sql
+=
"IF NOT EXISTS "
+
tb
+
" USING meters TAGS "
+
tag_values
+
" "
try
:
self
.
_conn
.
execute
(
sql
)
self
.
_conn
.
execute
(
sql
)
except
BaseException
as
e
:
self
.
log
.
error
(
"Execute SQL: %s"
,
sql
)
raise
e
docs/examples/python/stmt_writer.py
0 → 100644
浏览文件 @
aa85effe
class
StmtWriter
:
pass
docs/zh/07-develop/03-insert-data/05-high-volume.md
浏览文件 @
aa85effe
...
@@ -75,7 +75,7 @@ import TabItem from "@theme/TabItem";
...
@@ -75,7 +75,7 @@ import TabItem from "@theme/TabItem";
| WriteTask | 从 Queue 中获取数据,组成一个 Batch,写入 TDengine |
| WriteTask | 从 Queue 中获取数据,组成一个 Batch,写入 TDengine |
| MockDataSource | 模拟生成一定数量 meters 子表的数据 |
| MockDataSource | 模拟生成一定数量 meters 子表的数据 |
| SQLWriter | WriteTask 依赖这个类完成 SQL 拼接、自动建表、 SQL 写入、SQL 长度检查 |
| SQLWriter | WriteTask 依赖这个类完成 SQL 拼接、自动建表、 SQL 写入、SQL 长度检查 |
| StmtWriter | 实现参数绑定方式批量写入
,暂未完成
|
| StmtWriter | 实现参数绑定方式批量写入
(暂未完成)
|
| DataBaseMonitor | 统计写入速度,并每隔 10 秒把当前写入速度打印到控制台 |
| DataBaseMonitor | 统计写入速度,并每隔 10 秒把当前写入速度打印到控制台 |
...
@@ -141,7 +141,7 @@ import TabItem from "@theme/TabItem";
...
@@ -141,7 +141,7 @@ import TabItem from "@theme/TabItem";
<summary>
SQLWriter
</summary>
<summary>
SQLWriter
</summary>
SQLWriter 类封装了拼 SQL 和写数据的逻辑。注意,所有的表都没有提前创建,而是
写入出错的时候,再以超级表为模板批量建表,然后重新执行 INSERT 语句
。
SQLWriter 类封装了拼 SQL 和写数据的逻辑。注意,所有的表都没有提前创建,而是
在 catch 到表不存在异常的时候,再以超级表为模板批量建表,然后重新执行 INSERT 语句。对于其它异常,这里简单地记录当时执行的 SQL 语句到日志中,你也可以记录更多线索到日志,已便排查错误和故障恢复
。
```
java
```
java
{{
#
include
docs
/
examples
/
java
/
src
/
main
/
java
/
com
/
taos
/
example
/
highvolume
/
SQLWriter
.
java
}}
{{
#
include
docs
/
examples
/
java
/
src
/
main
/
java
/
com
/
taos
/
example
/
highvolume
/
SQLWriter
.
java
}}
...
@@ -217,7 +217,7 @@ TDENGINE_JDBC_URL="jdbc:TAOS://localhost:6030?user=root&password=taosdata"
...
@@ -217,7 +217,7 @@ TDENGINE_JDBC_URL="jdbc:TAOS://localhost:6030?user=root&password=taosdata"
```
```
6.
结束测试程序。测试程序不会自动结束,在获取到当前配置下稳定的写入速度后,按
<kbd>
CTRL
</kbd>
+
<kbd>
C
</kbd>
结束程序。
6.
结束测试程序。测试程序不会自动结束,在获取到当前配置下稳定的写入速度后,按
<kbd>
CTRL
</kbd>
+
<kbd>
C
</kbd>
结束程序。
下面是一次实际运行的
截图:
下面是一次实际运行的
日志输出,机器配置 16核 + 64G + 固态硬盘。
```
```
root@vm85$ java -classpath lib/*:javaexample-1.0.jar com.taos.example.highvolume.FastWriteExample 2 12
root@vm85$ java -classpath lib/*:javaexample-1.0.jar com.taos.example.highvolume.FastWriteExample 2 12
...
@@ -276,6 +276,7 @@ Python 示例程序中采用了多进程的架构,并使用了跨进程的消
...
@@ -276,6 +276,7 @@ Python 示例程序中采用了多进程的架构,并使用了跨进程的消
| MockDataSource 类 | 模拟数据源, 实现迭代器接口,每次批量返回每张表的接下来 1000 条数据 |
| MockDataSource 类 | 模拟数据源, 实现迭代器接口,每次批量返回每张表的接下来 1000 条数据 |
| run_write_task 函数 | 写进程主要逻辑。每次从队列中取出尽量多的数据,并批量写入 |
| run_write_task 函数 | 写进程主要逻辑。每次从队列中取出尽量多的数据,并批量写入 |
| SQLWriter类 | SQL 写入和自动建表 |
| SQLWriter类 | SQL 写入和自动建表 |
| StmtWriter 类 | 实现参数绑定方式批量写入(暂未完成) |
<details>
<details>
...
@@ -296,7 +297,7 @@ main 函数可以接收 5 个启动参数,依次是:
...
@@ -296,7 +297,7 @@ main 函数可以接收 5 个启动参数,依次是:
5.
每批最多写入记录数量, 默认为 3000
5.
每批最多写入记录数量, 默认为 3000
```
python
```
python
{{
#include docs/examples/python/
highvolume_faster_queu
e.py:main}}
{{
#include docs/examples/python/
fast_write_exampl
e.py:main}}
```
```
</details>
</details>
...
@@ -307,7 +308,7 @@ main 函数可以接收 5 个启动参数,依次是:
...
@@ -307,7 +308,7 @@ main 函数可以接收 5 个启动参数,依次是:
监控进程负责初始化数据库,并监控当前的写入速度。
监控进程负责初始化数据库,并监控当前的写入速度。
```
python
```
python
{{
#include docs/examples/python/
highvolume_faster_queu
e.py:monitor}}
{{
#include docs/examples/python/
fast_write_exampl
e.py:monitor}}
```
```
</details>
</details>
...
@@ -319,7 +320,7 @@ main 函数可以接收 5 个启动参数,依次是:
...
@@ -319,7 +320,7 @@ main 函数可以接收 5 个启动参数,依次是:
读进程,负责从其它数据系统读数据,并分发数据到为之分配的队列。
读进程,负责从其它数据系统读数据,并分发数据到为之分配的队列。
```
python
```
python
{{
#include docs/examples/python/
highvolume_faster_queu
e.py:read}}
{{
#include docs/examples/python/
fast_write_exampl
e.py:read}}
```
```
</details>
</details>
...
@@ -342,14 +343,14 @@ main 函数可以接收 5 个启动参数,依次是:
...
@@ -342,14 +343,14 @@ main 函数可以接收 5 个启动参数,依次是:
写进程每次从队列中取出尽量多的数据,并批量写入。
写进程每次从队列中取出尽量多的数据,并批量写入。
```
python
```
python
{{
#include docs/examples/python/
highvolume_faster_queu
e.py:write}}
{{
#include docs/examples/python/
fast_write_exampl
e.py:write}}
```
```
</details>
</details>
<details>
<details>
SQLWriter 类封装了拼 SQL 和写数据的逻辑。所有的表都没有提前创建,而是
写入出错的时候,再以超级表为模板批量建表,然后重新执行 INSERT 语句
。这个类也对 SQL 是否超过最大长度限制做了检查,如果接近 SQL 最大长度限制(maxSQLLength),将会立即执行 SQL。为了减少 SQL 此时,建议将 maxSQLLength 适当调大。
SQLWriter 类封装了拼 SQL 和写数据的逻辑。所有的表都没有提前创建,而是
在发生表不存在错误的时候,再以超级表为模板批量建表,然后重新执行 INSERT 语句。对于其它错误会记录当时执行的 SQL, 以便排查错误和故障恢复
。这个类也对 SQL 是否超过最大长度限制做了检查,如果接近 SQL 最大长度限制(maxSQLLength),将会立即执行 SQL。为了减少 SQL 此时,建议将 maxSQLLength 适当调大。
<summary>
SQLWriter
</summary>
<summary>
SQLWriter
</summary>
...
@@ -377,18 +378,18 @@ SQLWriter 类封装了拼 SQL 和写数据的逻辑。所有的表都没有提
...
@@ -377,18 +378,18 @@ SQLWriter 类封装了拼 SQL 和写数据的逻辑。所有的表都没有提
pip3 install faster-fifo
pip3 install faster-fifo
```
```
3.
点击上面的“查看源码”链接复制
`
highvolume_faster_queue.py`
和
`sql_writer.py`
两
个文件。
3.
点击上面的“查看源码”链接复制
`
fast_write_example.py`
、
`sql_writer.py`
和
`mockdatasource.py`
三
个文件。
4.
执行示例程序
4.
执行示例程序
```
```
python3
highvolume_faster_queu
e.py <READ_TASK_COUNT> <WRITE_TASK_COUNT> <TABLE_COUNT> <QUEUE_SIZE> <MAX_BATCH_SIZE>
python3
fast_write_exampl
e.py <READ_TASK_COUNT> <WRITE_TASK_COUNT> <TABLE_COUNT> <QUEUE_SIZE> <MAX_BATCH_SIZE>
```
```
下面是一次实际运行的输出:
下面是一次实际运行的输出:
```
```
root@vm85$ python3
highvolume_faster_queu
e.py 8 8
root@vm85$ python3
fast_write_exampl
e.py 8 8
2022-07-14 19:13:45,869 [root] - READ_TASK_COUNT=8, WRITE_TASK_COUNT=8, TABLE_COUNT=1000, QUEUE_SIZE=1000000, MAX_BATCH_SIZE=3000
2022-07-14 19:13:45,869 [root] - READ_TASK_COUNT=8, WRITE_TASK_COUNT=8, TABLE_COUNT=1000, QUEUE_SIZE=1000000, MAX_BATCH_SIZE=3000
2022-07-14 19:13:48,882 [root] - WriteTask-0 started with pid 718347
2022-07-14 19:13:48,882 [root] - WriteTask-0 started with pid 718347
2022-07-14 19:13:48,883 [root] - WriteTask-1 started with pid 718348
2022-07-14 19:13:48,883 [root] - WriteTask-1 started with pid 718348
...
@@ -427,3 +428,5 @@ SQLWriter 类封装了拼 SQL 和写数据的逻辑。所有的表都没有提
...
@@ -427,3 +428,5 @@ SQLWriter 类封装了拼 SQL 和写数据的逻辑。所有的表都没有提
</TabItem>
</TabItem>
</Tabs>
</Tabs>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录