【TDengine 使用环境】
生产环境 /测试/ Poc/预生产环境
【TDengine 版本】3.3.84
【操作系统以及版本】
【部署方式】容器
【集群节点数】
【集群副本数】
【描述业务影响】
【问题复现路径/shan】查询BLOB字段慢,批量则容易崩溃
【遇到的问题:问题现象及影响】
查询包含BLOB字段的数据表时,如果不指定时间查询,会比较慢,批量查询容易爆内存,有什么优化的方法
【资源配置】4核32GB
【报错完整截图】
【TDengine 使用环境】
生产环境 /测试/ Poc/预生产环境
【TDengine 版本】3.3.84
【操作系统以及版本】
【部署方式】容器
【集群节点数】
【集群副本数】
【描述业务影响】
【问题复现路径/shan】查询BLOB字段慢,批量则容易崩溃
【遇到的问题:问题现象及影响】
查询包含BLOB字段的数据表时,如果不指定时间查询,会比较慢,批量查询容易爆内存,有什么优化的方法
【资源配置】4核32GB
【报错完整截图】
最主要的优化方法就是增加查询的时间范围,否则全表扫描,数据量大的时候肯定就慢了。
请将 具体的查询 sql 和 对应的 表的 schema 发出来看看。
已经增加了时间范围了
DDL:CREATE TABLE iot_recovery.edge_scheduled_data (
daq_date_time_stamp **TIMESTAMP** **NOT** **NULL**,
sensor_id **VARCHAR**(64),
direction **INT**,
sensor_type **INT**,
daq_date_start_time **VARCHAR**(20),
frequency_4_analysis **INT**,
spectrum_lines **INT**,
block_no **INT**,
point_per_block **INT**,
blocks **INT**,
rms **FLOAT**,
rms_1_6k **FLOAT**,
rms_2_1k **FLOAT**,
max **FLOAT**,
min **FLOAT**,
mean **FLOAT**,
peak **FLOAT**,
peak_to_peak **FLOAT**,
variance **FLOAT**,
average_amplitude **FLOAT**,
square_root_amplitude **FLOAT**,
kurtosis **FLOAT**,
impulse_factor **FLOAT**,
shape_indicator **FLOAT**,
crest_factor **FLOAT**,
margin_index **FLOAT**,
skewness_index **FLOAT**,
vel_rms **FLOAT**,
vel_rms_2_1k **FLOAT**,
vel_peak **FLOAT**,
time_raw_data **BLOB**,
receive_time **TIMESTAMP**,
sensor_code **VARCHAR**(64),
**CONSTRAINT** daq_date_time_stamp **PRIMARY** **KEY** (daq_date_time_stamp)
);
sql: select * from iot_recovery.edge_scheduled_data
where sensor_code = ‘124010125_1_11’ and daq_date_time_stamp > ‘2026-06-30 20:00:00’ limit 50; 这种情况下需要22秒
创建的 普通表表,没有使用超级表模式?
sensor_code = ‘124010125_1_11’ 这种过滤是比较耗时的。
这种建模方式不是很好。对于一些静态变量,应该使用超级表方式建模。这样过滤性能更快。
是超级表,这个code就是tag