【TDengine 使用环境】
生产环境
【TDengine 版本】
3.0.7.1
【操作系统以及版本】
windows10
【部署方式】容器/非容器部署
非容器
【遇到的问题:问题现象及影响】
我们有张超级表device_log ,表结构如下:
CREATE STABLE device_log (
ts TIMESTAMP,
log_value VARCHAR (100),
is_monitor TINYINT,
log_type TINYINT,
identity VARCHAR (100),
mode TINYINT,
remark VARCHAR (500)
) TAGS (serial_number VARCHAR(50))
子表的结构为:
CREATE TABLE device_202511100747 USING device_log (serial_number) TAGS (“202511100747”)
我们有个定时任务,从超级表中分组计算数据,每次最多处理100个设备。涉及到的sql有两条:
1、从超级表批量查询数据:
SELECT
serial_number,
FIRST (log_value) AS start_value,
LAST (log_value) AS end_value
FROM
gdxsiot_log.device_log
WHERE
identity = ‘DRA_Energy’
AND ts BETWEEN ‘2026-03-05 00:00:00’
AND ‘2026-03-05 23:59:59’
AND serial_number IN (‘xxx)
GROUP BY serial_number;
2、超级表没有数据的进行补偿:
SELECT
LAST (ts) AS ts,
serial_number,
LAST (consumption) AS device_consumption,
LAST (start_value) AS start_value,
LAST (end_value) AS end_value,
LAST (caculate_time) AS caculate_time
FROM
gdxsiot_log.device_daily_energy
WHERE
serial_number IN (‘xxx’)
GROUP BY serial_number;
在测试中发现第一条sql执行时间在200ms左右,第二条偏长在600ms,但是我们任务是单线程跑的,单次执行过程中就可能出现崩溃。
下面是TD的运行日志,还请帮忙看看是什么问题,应该怎么修复。

