【TDengine 使用环境】测试环境
【TDengine 版本】3.3.8
【操作系统以及版本】centos 7.9
【部署方式】容器/非容器部署 docker部署
【集群节点数】
【集群副本数】
【描述业务影响】
【问题复现路径/shan】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】vehicle_data这张表数据共10亿条,执行查询脚本,qps很低,远低于官方文档的qps
【资源配置】4核16g
【报错完整截图】(不要大段的粘贴报错代码,论坛直接看报错代码不直观)
新手小白测试数据库性能,欢迎大佬指正
测试的 JSON 文件能发下吗,另外前几个 SQL 在 taos-CLI 中手动查询下,看耗时多少,给截个图
{
"filetype": "query",
"cfgdir": "/etc/taos",
"host": "127.0.0.1",
"port": 6030,
"user": "root",
"password": "taosdata",
"confirm_parameter_prompt": "no",
"continue_if_fail": "yes",
"databases": "vehicle_db",
"query_times": 100000,
"query_mode": "taosc",
"specified_table_query": {
"query_interval": 1,
"threads": 10,
"sqls": [
{
"sql": "select count(1) from vehicle_data where ts >= '2025-01-01 00:00:00.000' AND ts < '2025-01-01 01:00:00.000' AND region = 'north' ;",
"result": "./query_res0.txt"
}
]
}
}
在 taos 客户端分别执行这两个 sql,看看这俩查询的 sql 耗时
“query_interval”: 1,
把这行去了, interval 会在每个查询之间做 sleep 的
这个有尝试过。是不是需要更改什么配置,查询才会变快。目前我用的是docker下载的镜像,完全没有更改配置
不需要更改配置,那你删除这个输出到文件中的这行试下
您提供的查询语句为:
select count(1) from vehicle_data where ts >= ‘2025-01-01 00:00:00.000’ AND ts < ‘2025-01-01 01:00:00.000’ AND region = ‘north’;
如果 vehicle_data是一个超级表,并且 region是其标签(Tag),那么这个查询是在统计特定时间范围和特定标签下的总记录数。查询耗时约0.5秒是可能出现的,尤其是在数据量较大或硬件配置普通的情况下。
这是因为,尽管查询条件中指定了时间范围和标签,但 COUNT(1)操作仍然需要扫描这些范围内的数据块来计数。TD 虽然通过子表和时间分片机制优化了数据定位,但如果查询涉及的数据量较大,那么这种多数据块查询可能仍需要不小的资源开销。
建议你查询子表试一下。例如
select count(1) from vehicle1;
select last(*) from vehicle1;
我知道为什么这么慢了。我的tags第一个标签用了整形,我改成binary后qps起飞到爆炸