TDengine实战

作者: Sdoopy | 来源:发表于2020-03-02 14:44 被阅读0次

    快速体验的步骤

    服务器部署TDenginge

    1. 下载最新rpm
    2. rpm -ivh TDengine-server-1.6.5.7-Linux-x64.rpm
    3. 卸载TDenginge rpm -e TDengine

    关于如何快速体验和使用TDengine:
    1、快速安装和上手(安装、运行、体验demo,基本半个小时之内完成): https://www.taosdata.com/cn/getting-started/
    2、进阶:了解具体的建模、SQL语句、高级应用等(有基础的大概1-2天): https://www.taosdata.com/cn/documentation/
    3、具体的一些Case应用详细指导: https://www.taosdata.com/cn/blog/
    推荐2个:
    ( 1)、快速数据导入:https://www.taosdata.com/blog/2020/01/18/1166.html
    (2)、用Docker容器快速搭建一个Devops监控Demo https://www.taosdata.com/blog/2020/02/03/1189.html
    4、第三方测试对比工具和方法: https://www.taosdata.com/blog/2020/01/13/1105.html
    5、 也可以直接参考我们自己的对比测试报表和测试方案、环境、源代码
    (1)、TDengine与OpenTSDB对比测试
    https://www.taosdata.com/blog/2019/08/21/621.html
    (2)、TDengine与Cassandra对比测试
    https://www.taosdata.com/blog/2019/08/14/573.html
    (3)、TDengine与InfluxDB对比测试
    https://www.taosdata.com/blog/2019/07/19/419.html

    细节:

    1. 表名和列名不能跟关键字和函数名冲突。如avg等。
    2. TDengine的异步API均采用非阻塞调用模式。应用程序可以用多线程同时打开多张表,并可以同时对每张打开的表进行查询或者插入操作。需要指出的是,客户端应用必须确保对同一张表的操作完全串行化,即对同一个表的插入或查询操作未完成时(未返回时),不能够执行第二个插入或查询操作。
    3. TAG 里面的字符串 一定要带 ' ' 。
    4. 写数据的时候,发现盘写满了,忘记换数据目录了。赶紧把配置表的数据目录路径一改,再把原来的数据一迁移。发现不行。这是因为/var/lib/taos/tsdb 里面的软链接还没有改过来,所以找不到数据节点。
      5.对于一个应用场景,可能有多种数据特征的数据并存,最佳的设计是将具有相同数据特征的表放在一个库里,这样一个应用有多个库,而每个库可以配置不同的存储参数,从而保证系统有最优的性能。TDengine容许应用在创建库时指定上述存储参数,如果指定,该参数就将覆盖对应的系统配置参数。举例,有下述SQL:
    create database demo days 10 cache 16000 ablocks 4
    

    该SQL创建了一个库demo, 每个数据文件保留10天数据,内存块为16000字节,每个表平均占用4个内存块,而其他参数与系统配置完全一致。

    1. 导出数据时,可以使用taosdump 工具。慎用 -M 参数。这个参数会导出表或者库的结构。如果你不想使用库原来的配置,如cache,ablocks,tblocks 等参数,就不要加这个参数。
    2. 服务端写数据比客户端写数据快。我这边的数据是2倍左右。
    3. 有条件的话可以重写数据,没条件的话再选择导出数据,导出再导入还不如重写。
    4. 重点。如何根据自己的业务场景优化自己的数据库结构
      可以修改的参数配置有

    days:数据文件存储数据的时间跨度,单位为天
    keep:数据保留的天数
    rows: 文件块中记录条数
    comp: 文件压缩标志位,0:关闭,1:一阶段压缩,2:两阶段压缩
    ctime:数据从写入内存到写入硬盘的最长时间间隔,单位为秒
    clog:数据提交日志(WAL)的标志位,0为关闭,1为打开
    tables:每个vnode允许创建表的最大数目
    cache: 内存块的大小(字节数)
    tblocks: 每张表最大的内存块数
    ablocks: 每张表平均的内存块数
    precision:时间戳为微秒的标志位,ms表示毫秒,us表示微秒

    最有用的几个参数:days, ctime, tables, cache,ablokcs,tblocks。
    这几个参数需要在创建库的时候就要配置好,否则会用系统默认配置。
    占用总内存 = cache * ablocks * 你的总表数
    TDengine里的vnode概念,主要是为了提高查询速度,有点map/reduce的感觉。因此,我们如果想要提高查询效率,可以想办法增加vnode的数量。tables参数可以用来调节vnode参数。tables越小,vnode就越多。但是也不能太小,这是一个工程问题。把vnode控制在10-100之间为最佳。
    TDengine将一个vnode保存在持久化存储的数据切分成多个文件,每个文件只保存固定天数的数据,这个天数由系统配置参数days决定。切分成多个文件后,给定查询的起止日期,无需任何索引,就可以立即定位需要打开哪些数据文件,大大加快读取速度

    1. python安装问题
      服务器上安装python版taos驱动
    pip3 install src/connector/python/linux/python3/
    

    导入后,报错,找不到libtaos.so,是因为系统环境变量没有配。看下面的解决方案
    https://github.com/taosdata/TDengine/issues/193

    —————以上都是1.6版本的内容,由于TDengine已经更新到2.0,改动比较大,下面的内容都是2.0的——————

    1. TDengine 支持修改的数据库配置参数已经改变。

    days:一个数据文件存储数据的时间跨度,单位为天,默认值:10。
    keep:数据库中数据保留的天数,单位为天,默认值:3650。
    minRows: 文件块中记录的最小条数,单位为条,默认值:100。
    maxRows: 文件块中记录的最大条数,单位为条,默认值:4096。
    comp: 文件压缩标志位,0:关闭,1:一阶段压缩,2:两阶段压缩。默认值:2。
    walLevel:WAL级别。1:写wal, 但不执行fsync; 2:写wal, 而且执行fsync。默认值:1。
    fsync:当wal设置为2时,执行fsync的周期。设置为0,表示每次写入,立即执行fsync。单位为毫秒,默认值:3000。
    cache: 内存块的大小,单位为兆字节(MB),默认值:16。
    blocks: 每个VNODE(TSDB)中有多少cache大小的内存块。因此一个VNODE的用的内存大小粗略为(cache * blocks)。单位为块,默认值:4。
    replica:副本个数,取值范围:1-3。单位为个,默认值:1
    precision:时间戳精度标识,ms表示毫秒,us表示微秒。默认值:ms

    相关文章

      网友评论

        本文标题:TDengine实战

        本文链接:https://www.haomeiwen.com/subject/wmimkhtx.html