数据库同表查询不同时段数据请求效率差距大

【TDengine 使用环境】测试

【TDengine 版本】3.3.6.13

【操作系统以及版本】CentOS Linux 7

【部署方式】容器部署

【集群节点数】1

【描述业务影响】

处理表中异常数据(为null或超限值)时,需查询并更新该字段历史最近不为空的数据,在查询时,对同表执行查询语句,不同时段的数据查询存在效率差异,影响数据处理效率。

【问题复现路径/shan】

按照每分钟一条数据,写入3-6个月数据,分别已ts<时间作为条件执行查询语句,存在效率问题

【遇到的问题:问题现象及影响】

对同一张表进行数据查询,每个月数据量以及为空数据量相同,网络环境不变,没有缓存影响。

SELECT last(ts),influent_q_rd FROM iot.realtime_data WHERE ts < 时间

以随机日期,作为SQL查询时间段,查询各时间段数据,消耗效率存在差异,最短消耗10多毫秒,最高180多毫秒,查询结果统计如下

【资源配置】

【报错完整截图】

原因是对于不同时间段的数据,数据库会采用内存缓存、磁盘缓存,以及数据文件等方式存储,当查询时段命中不同时间段时,耗时不同。也和该表数据量(子表数)有关。

效率内存缓存>磁盘缓存>以及数据文件。

你的场景可以考虑使用interp断面函数,具体使用,参见:数据查询 | TDengine 文档 | 涛思数据

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。