【TDengine 使用环境】
测试环境
【TDengine 版本】
3.4.1
【操作系统及版本】
CentOS 7.9
【部署方式】
容器部署
【集群节点数】
6 节点集群
【集群副本数】
待补充
【资源配置】
内网虚拟机
32GB 内存
32 Core CPU
1T 硬盘
【业务场景】
准备了约 10000 个子表,并创建了 10 个虚拟表。
每个虚拟表中的字段,实际映射到不同子表中的字段。
例如:
vt_1:
f1 → subtable_1.v1
f2 → subtable_2.v2
f3 → subtable_3.v4
后续通过 Java 程序对这些虚拟表执行查询。
【问题现象】
单条 SQL 单独执行时查询速度较快;
但使用 Java 多线程并发查询时,整体查询速度明显下降,并且单条 SQL 的耗时也明显增加。
【复现方式】
- 准备约 10000 个子表;
- 创建 10 个虚拟表;
- 准备多条虚拟表查询 SQL;
- 使用 Java 线程池并发执行查询;
- 每条 SQL 使用独立 Statement,且保证不是同一个 Connection;
- 对比单次查询与并发查询耗时。
【客户端并发方式】
使用 Java ExecutorService 线程池并发执行查询。
【核心问题】
- 虚拟表场景下,并发查询变慢是否属于正常现象?
- 虚拟表查询是否存在并发性能瓶颈?
- 是否有推荐的连接数、线程数或查询参数配置?
- 如何定位是客户端并发问题,还是 TDengine 服务端资源瓶颈?
【补充说明】
单条查询耗时:1079 ms
并发数:10
并发后单条平均耗时:9024 ms
整体批次耗时:9079 ms