您当前的位置:首页 > 互联网教程

TDengine常用语句与特性

发布时间:2025-05-22 04:31:49    发布人:远客网络

TDengine常用语句与特性

一、TDengine常用语句与特性

1、创建数据库:CREATE DATABASE IF NOT EXISTS;

2、显示数据库中超级表:show stables;

3、创建超级表:CREATE STABLE(ts timestamp, longitude double, latitude double, tgtheight float, course float, speed float, fusiontype int, fusionsrccnt tinyint, fusionsrcs nchar(200)) TAGS(starttime timestamp);

4、删除超级表:DROP STABLE IF EXISTS;

5、查询是否存在某张表:select count(*) from information_schema.ins_tables where db_name='' and table_name='';

6、查询超级表下所有子表表名:select table_name from information_schema.ins_tables where db_name='' and stable_name='';

7、查询数据库超表:select stable_name from information_schema.ins_stables where db_name='';

8、超级表新增Tag:ALTER TABLE add tag;

9、删除超级表Tag:ALTER TABLE DROP TAG;

10、查询Tag与count(*):select,count(*) from group by;

11、查询表最后一条数据:select* from order by ts desc limit 1;

12、查看数据库表数量(不含超表):select count(*) from information_schema.ins_tables where db_name='';

13、查看超级表下子表数量:select count(*) from information_schema.ins_tables where db_name='' and stable_name='';

14、查看超级表下子表数量(2):select count() from(select from group by);

15、使用order by、group by与limit:select* from(select* from where> 220822999000804 group by) order by limit 10;

16、相同时间戳数据插入:在TDengine中,如果同一张表内插入相同时间戳数据,且未设置UPDATE=1选项,则会直接抛弃新数据。当创建Database时使用UPDATE=1,新数据会覆盖原有同时间戳数据,最终保留一条。

17、插入数据时间戳不按顺序:TDengine会自动排序插入数据的时间戳。

18、提升数据插入效率:一次SQL语句写入多条记录,插入效率更高,推荐同时写入多个表。

19、提升数据查询效率:使用union或union all合并查询语句,一次查询提高效率。注意使用order by或order by limit时,需用括号括起来,避免语法错误。

二、浅谈时序数据库TDengine

1、近期,时序数据库TDengine备受瞩目,尽管官方测试表现优异,但在使用过程中,我发现存在一些挑战。首要问题在于写入策略,设计中要求用户为每个Tag组合自定义表名,虽然初衷是将同类数据聚合,但这种操作实际上增加了用户的负担。如果系统内部能自动处理Tag唯一性,通过内部隐藏的表名,用户只需操作一个超级表STable,将简化操作,提升写入性能。

2、不支持乱序写入是TDengine的一个局限,它牺牲了一定的灵活性,以保证写入性能。例如,数据写入时需要保持时间顺序,否则可能导致复杂的数据调整。这不仅影响了写入效率,还省去了类似RocksDB的compact操作,减少了查询时的数据量。因此,用户在使用时需要遵循特定的写入规则,以保证性能。

3、查询方面,对于常见的需求如topN group,例如查询CPU利用率最高的三台机器,TDengine目前无法满足。此外,对于每个appId的总连接数曲线,通过downsampling和aggregation来聚合数据时,TDengine的SQL功能受限,无法处理复杂的函数嵌套,这也成为了一个痛点。

4、在group by操作中,比如依据host和disk进行分组,当数据量庞大,如30万个表时,TDengine的性能将大打折扣。查询过程需先获取大量表的meta信息,然后逐个表查询,这在数据节点众多时会成为瓶颈。

5、查询聚合架构方面,两阶段查询方式可能导致效率问题,尤其是当满足条件的表超过百万时。这促使我们考虑使用分布式查询方案,如Presto或Impala,以解决客户端聚合的性能瓶颈。

三、数据库-涛思-TDengine

数据库-涛思-TDengine的直观概述

在探索时序数据库领域时,我曾接触过Influxdb和OpenTSDB,而现在又遇到了一个新兴平台——涛思数据的开源大数据处理平台TDengine。专为物联网、车联网等场景设计,TDengine以其出色的高效性能和全面的功能脱颖而出。它不仅拥有核心的时序数据库功能,速度比传统数据库快10倍以上,还提供了缓存、数据订阅和流式计算等功能,旨在简化研发和运维工作,且所有核心代码和集群功能均开源。

官网的介绍中,包含了一系列关键特性,值得深入研究。首先,从容器化部署开始,包括下载镜像、运行容器、输入初始样例数据,如在35.68秒内成功插入1亿条数据,每秒处理速度达到280万条,显示出其高效性能。接着,通过查询数据和访问REST接口,体验了其数据库操作的便捷性。

在初步体验中,我观察到TDengine的操作模式与MySQL类似,但后续仍需深入研究其时序数据库、缓存、数据订阅和流式计算等功能,以全面了解其优势。毕竟,周五到了,是时候享受一下其他兴趣爱好,比如玩一局太华。不过,周末我将继续研究,期待发现更多亮点。