diff --git a/docs/examples/java/src/main/java/com/taos/example/highvolume/SQLWriter.java b/docs/examples/java/src/main/java/com/taos/example/highvolume/SQLWriter.java
index 68b759f2e44f5054d9a567050c711a3e0116d1ce..c2989acdbe3d0f56d7451ac86051a55955ce14de 100644
--- a/docs/examples/java/src/main/java/com/taos/example/highvolume/SQLWriter.java
+++ b/docs/examples/java/src/main/java/com/taos/example/highvolume/SQLWriter.java
@@ -154,11 +154,11 @@ public class SQLWriter {
createTables();
executeSQL(sql);
} else {
- logger.error("Error execute SQL: {}", sql);
+ logger.error("Execute SQL: {}", sql);
throw e;
}
} catch (Throwable throwable) {
- logger.error("Error execute SQL: {}", sql);
+ logger.error("Execute SQL: {}", sql);
throw throwable;
}
}
@@ -179,7 +179,7 @@ public class SQLWriter {
try {
stmt.executeUpdate(sql);
} catch (Throwable throwable) {
- logger.error("Error execute SQL: {}", sql);
+ logger.error("Execute SQL: {}", sql);
throw throwable;
}
}
diff --git a/docs/examples/python/highvolume_faster_queue.py b/docs/examples/python/fast_write_example.py
similarity index 100%
rename from docs/examples/python/highvolume_faster_queue.py
rename to docs/examples/python/fast_write_example.py
diff --git a/docs/examples/python/sql_writer.py b/docs/examples/python/sql_writer.py
index 886f257001e0ca16fd52224fe2fb6c76c54b4a8b..cb04f85c239af7c4801e2a5ef0483a88b21245ef 100644
--- a/docs/examples/python/sql_writer.py
+++ b/docs/examples/python/sql_writer.py
@@ -72,11 +72,19 @@ class SQLWriter:
if error_code == 0x362 or error_code == 0x218:
self.create_tables()
else:
+ self.log.error("Execute SQL: %s", sql)
raise e
+ except BaseException as baseException:
+ self.log.error("Execute SQL: %s", sql)
+ raise baseException
def create_tables(self):
sql = "CREATE TABLE "
for tb in self._tb_values.keys():
tag_values = self._tb_tags[tb]
sql += "IF NOT EXISTS " + tb + " USING meters TAGS " + tag_values + " "
- self._conn.execute(sql)
+ try:
+ self._conn.execute(sql)
+ except BaseException as e:
+ self.log.error("Execute SQL: %s", sql)
+ raise e
diff --git a/docs/examples/python/stmt_writer.py b/docs/examples/python/stmt_writer.py
new file mode 100644
index 0000000000000000000000000000000000000000..60846b5a6491491655905008b58e6411818720fb
--- /dev/null
+++ b/docs/examples/python/stmt_writer.py
@@ -0,0 +1,2 @@
+class StmtWriter:
+ pass
diff --git a/docs/zh/07-develop/03-insert-data/05-high-volume.md b/docs/zh/07-develop/03-insert-data/05-high-volume.md
index 52b89e8a9b4535f18190bcaaa3a376491fce4521..dec96bf36a70ca4a863864e25b27fb8a4d1e043f 100644
--- a/docs/zh/07-develop/03-insert-data/05-high-volume.md
+++ b/docs/zh/07-develop/03-insert-data/05-high-volume.md
@@ -75,7 +75,7 @@ import TabItem from "@theme/TabItem";
| WriteTask | 从 Queue 中获取数据,组成一个 Batch,写入 TDengine |
| MockDataSource | 模拟生成一定数量 meters 子表的数据 |
| SQLWriter | WriteTask 依赖这个类完成 SQL 拼接、自动建表、 SQL 写入、SQL 长度检查 |
-| StmtWriter | 实现参数绑定方式批量写入,暂未完成 |
+| StmtWriter | 实现参数绑定方式批量写入(暂未完成) |
| DataBaseMonitor | 统计写入速度,并每隔 10 秒把当前写入速度打印到控制台 |
@@ -141,7 +141,7 @@ import TabItem from "@theme/TabItem";
SQLWriter
-SQLWriter 类封装了拼 SQL 和写数据的逻辑。注意,所有的表都没有提前创建,而是写入出错的时候,再以超级表为模板批量建表,然后重新执行 INSERT 语句。
+SQLWriter 类封装了拼 SQL 和写数据的逻辑。注意,所有的表都没有提前创建,而是在 catch 到表不存在异常的时候,再以超级表为模板批量建表,然后重新执行 INSERT 语句。对于其它异常,这里简单地记录当时执行的 SQL 语句到日志中,你也可以记录更多线索到日志,已便排查错误和故障恢复。
```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"
```
6. 结束测试程序。测试程序不会自动结束,在获取到当前配置下稳定的写入速度后,按 CTRL + C 结束程序。
- 下面是一次实际运行的截图:
+ 下面是一次实际运行的日志输出,机器配置 16核 + 64G + 固态硬盘。
```
root@vm85$ java -classpath lib/*:javaexample-1.0.jar com.taos.example.highvolume.FastWriteExample 2 12
@@ -276,6 +276,7 @@ Python 示例程序中采用了多进程的架构,并使用了跨进程的消
| MockDataSource 类 | 模拟数据源, 实现迭代器接口,每次批量返回每张表的接下来 1000 条数据 |
| run_write_task 函数 | 写进程主要逻辑。每次从队列中取出尽量多的数据,并批量写入 |
| SQLWriter类 | SQL 写入和自动建表 |
+| StmtWriter 类 | 实现参数绑定方式批量写入(暂未完成) |
@@ -296,7 +297,7 @@ main 函数可以接收 5 个启动参数,依次是:
5. 每批最多写入记录数量, 默认为 3000
```python
-{{#include docs/examples/python/highvolume_faster_queue.py:main}}
+{{#include docs/examples/python/fast_write_example.py:main}}
```
@@ -307,7 +308,7 @@ main 函数可以接收 5 个启动参数,依次是:
监控进程负责初始化数据库,并监控当前的写入速度。
```python
-{{#include docs/examples/python/highvolume_faster_queue.py:monitor}}
+{{#include docs/examples/python/fast_write_example.py:monitor}}
```
@@ -319,7 +320,7 @@ main 函数可以接收 5 个启动参数,依次是:
读进程,负责从其它数据系统读数据,并分发数据到为之分配的队列。
```python
-{{#include docs/examples/python/highvolume_faster_queue.py:read}}
+{{#include docs/examples/python/fast_write_example.py:read}}
```
@@ -342,14 +343,14 @@ main 函数可以接收 5 个启动参数,依次是:
写进程每次从队列中取出尽量多的数据,并批量写入。
```python
-{{#include docs/examples/python/highvolume_faster_queue.py:write}}
+{{#include docs/examples/python/fast_write_example.py:write}}
```
-SQLWriter 类封装了拼 SQL 和写数据的逻辑。所有的表都没有提前创建,而是写入出错的时候,再以超级表为模板批量建表,然后重新执行 INSERT 语句。这个类也对 SQL 是否超过最大长度限制做了检查,如果接近 SQL 最大长度限制(maxSQLLength),将会立即执行 SQL。为了减少 SQL 此时,建议将 maxSQLLength 适当调大。
+SQLWriter 类封装了拼 SQL 和写数据的逻辑。所有的表都没有提前创建,而是在发生表不存在错误的时候,再以超级表为模板批量建表,然后重新执行 INSERT 语句。对于其它错误会记录当时执行的 SQL, 以便排查错误和故障恢复。这个类也对 SQL 是否超过最大长度限制做了检查,如果接近 SQL 最大长度限制(maxSQLLength),将会立即执行 SQL。为了减少 SQL 此时,建议将 maxSQLLength 适当调大。
SQLWriter
@@ -377,18 +378,18 @@ SQLWriter 类封装了拼 SQL 和写数据的逻辑。所有的表都没有提
pip3 install faster-fifo
```
-3. 点击上面的“查看源码”链接复制 `highvolume_faster_queue.py` 和 `sql_writer.py` 两个文件。
+3. 点击上面的“查看源码”链接复制 `fast_write_example.py` 、 `sql_writer.py` 和 `mockdatasource.py` 三个文件。
4. 执行示例程序
```
- python3 highvolume_faster_queue.py
+ python3 fast_write_example.py
```
下面是一次实际运行的输出:
```
- root@vm85$ python3 highvolume_faster_queue.py 8 8
+ root@vm85$ python3 fast_write_example.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:48,882 [root] - WriteTask-0 started with pid 718347
2022-07-14 19:13:48,883 [root] - WriteTask-1 started with pid 718348
@@ -427,3 +428,5 @@ SQLWriter 类封装了拼 SQL 和写数据的逻辑。所有的表都没有提
+
+