【TDengine 使用环境】 测试环境
【TDengine 版本】3.4.1
【操作系统以及版本】centos7.9
【部署方式】容器/非容器部署 非容器
【集群节点数】单机
【资源配置】内存32g
先简单说一下我们这边入库流程:数据经过采集程序发送到kafka队列 经过一些业务逻辑处理之后 发送到kafka的入库队列 进行数据入库
如下是在每秒推送相同的数据量的情况下
1.以下为websocket写入入库部分代码及测试结果 从kafka监控软件看入库队列堆积持续且持续增长
2.原生连接,使用一次入库多个普通表方式 kafka工具看入库lag数量保持稳定且不增长
综上:目前看原生写入效率远超stmt模式 请看下这边哪些stmt有问题呢 我看官方一直建议的是用此方式写入
Zelv
(ZeLv)
2
我这边一直看的就是这个文档 也是按照这个文档进行的stmt数据库入库 我这边写的 和 您让我看的 有啥区别吗 导致的 结果差距明显呢
主要是 stmt 对象没有复用导致的,你要写多个超级表吗?每个超级表的写入的 PreparedStatement 应该都能复用。
建议是创建好这些 PreparedStatement 之后,是循环从队列中拉取数据写入,整个程序生命周期都不再创建了。
按照您说的复用.我这边调整了代码 我将stmt放在了我方框位置 也就是说 我这边逻辑groupMap的一次大循环 都是对应的一张超级表的数据入库 复用了stmt 但是按照我之前的压测 目前看效果比之前的写法 确实要好很多 但是还是不如原生链接的性能 websocket写法还有其他可以改进的吗