TDengine小知识-数据文件命名规则

TDengine 时序数据库对数据文件有自己的命名规则,文件名中包含了vnodeID、时间范围、版本、文件类型等多种信息。了解数据文件命名规则,可以让运维工作更简单。
废话不多说,直接上图:
在这里插入图片描述

  • v4:文件所属 Vgroup 组,该文件属于 Vgroup 4。
  • f1833:FileID,该ID使用时间命名,为时间分片的初始时间点,ID=UnixTime/Duration。
[root@c2-125 ~]# echo "1833*864000"|bc
1583712000
[root@c2-125 ~]# date -d @1583712000 +'%Y-%m-%d %H:%M:%S'
2020-03-09 08:00:00
##Otherway
[root@c2-125 ~]# echo "1833*864000"|bc|awk '{print strftime("%Y-%m-%d",$1)}'
2020-03-09

f1833 表示存储 2023-03-09 至 2023-03-19 时间范围的数据(以上示例数据库 Duration 是10天[864000秒])。

TIPS:TDengine 是按照零时区进行的时间分片和本地时区设置无关。

  • ver151:版本号,随文件更新而递增。
  • data:文件类型。

TDengine 3.0 版本有如下文件类型:

  1. data 数据文件,存储时序数据
  2. head 头文件(索引文件):存储data文件中的数据分布信息。
  3. stt 临时文件:临时存储不满足落盘条件(minRows)的数据。
  4. sma 预计算文件:存储时序数据的预计算结果。

案例演示

下面我们对上述说法进行验证,验证步骤如下:

  1. 创建数据库
  2. 写入指定时间数据
  3. 让数据落盘
  4. 检查文件名称

1. 创建数据库

taos> show databases;name              |
=================================information_schema             |performance_schema             |
Query OK, 2 row(s) in set (0.001396s)taos> create database db01 vgroups 1 duration 1d wal_retention_period 0;
Create OK, 0 row(s) affected (0.090438s)taos> show databases;name              |
=================================information_schema             |performance_schema             |db01                           |
Query OK, 3 row(s) in set (0.001374s)

为方便展示将 vgroups 数量设置为 1,文件分片粒度 duration 设置为 1天,wal 保存时间设置为 0。

2. 写入指定时间数据

taos> use db01;
Database changed.taos> create table t1(ts timestamp,v1 int);
Create OK, 0 row(s) affected (0.001026s)taos> insert into t1 values('2023-05-01T00:00:00Z',1);
Insert OK, 1 row(s) affected (0.000884s)taos> insert into t1 values('2023-05-01T00:00:01Z',2);
Insert OK, 1 row(s) affected (0.000697s)taos> insert into t1 values('2023-05-01T00:00:03Z',3);
Insert OK, 1 row(s) affected (0.000729s)taos> select * from t1;ts            |     v1      |
========================================2023-05-01 08:00:00.000 |           1 |2023-05-01 08:00:01.000 |           2 |2023-05-01 08:00:03.000 |           3 |
Query OK, 3 row(s) in set (0.016896s)

TIPS: 我在写入数据时采用的是 ISO8601 时间格式,指定时区为零时区。而我本地客户端设置的是东八区,因此显示的时间和我写入的时间相差 8 小时。
为保证写入数据时间的准确性,TDengine 建议采用 ISO8601 和 Epoch (Unix Time) 两种格式。

3. 数据落盘

taos> flush database db01;
Query OK, 0 row(s) affected (0.003168s)

4. 检查文件名称

检查文件名称前,我们先查看以下文件所属Vgroup

taos> show vgroups;vgroup_id  |            db_name             |   tables    | v1_dnode |  v1_status  | v2_dnode |  v2_status  | v3_dnode |  v3_status  | v4_dnode |  v4_status  |  cacheload  | cacheelements | tsma |
======================================================================================================================================================================================================6 | db01                           |           1 |        1 | leader      | NULL     | NULL        | NULL     | NULL        | NULL     | NULL        |           0 |             0 |    0 |
Query OK, 1 row(s) in set (0.002075s)
[root@c2-125 ~]# cd /var/lib/taos/vnode/vnode6/tsdb/
[root@c2-125 tsdb]# ll
total 8
drwxr-xr-x 2 root root  123 Oct 20 08:51 cache.rdb
-rwxrwxrwx 1 root root  135 Oct 20 08:57 current.json
-rwxrwxrwx 1 root root 4096 Oct 20 08:57 v6f19478ver1.stt

查看数据文件目录,可以看到里面只有 1 个 v6f19478ver1.stt 文件,因为刚才只写了 3 条数据,达不到落盘条件。

[root@c2-125 tsdb]# echo "19478*86400"|bc
1682899200
[root@c2-125 tsdb]# date -d @1682899200 +'%Y-%m-%d %H:%M:%S'
2023-05-01 08:00:00

做一下时间转换,显示该文件时间起始范围是 2023-05-01。

扩展

知道数据文件的命名规则可以帮助我们做哪些事情呢?

  1. 了解数据文件在硬盘上的分布。
  2. 了解进程在对哪些数据进行操作(lsof -p pidof taosd|grep REG)
  3. 了解不同时间范围数据特征(如果stt文件较大,可能需要compact)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/116276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode:2347. 最好的扑克手牌(python3解法)

难度:简单 给你一个整数数组 ranks 和一个字符数组 suit 。你有 5 张扑克牌,第 i 张牌大小为 ranks[i] ,花色为 suits[i] 。 下述是从好到坏你可能持有的 手牌类型 : "Flush":同花,五张相同花色的…

安装visual studio报错“无法安装msodbcsql“

在安装visual studio2022时安装完成后提示无法安装msodbcsql, 查看日志文件详细信息提示:指定账户已存在。 未能安装包“msodbcsql,version17.2.30929.1,chipx64,languagezh-CN”。 搜索 URL https://aka.ms/VSSetupErrorReports?qPackageIdmsodbcsql;PackageActi…

用matlab求解线性规划

文章目录 1、用单纯形表求解线性规划绘制单纯形表求解: 2、用matlab求解线性规划——linprog()函数问题:补充代码:显示出完整的影子价格向量 1、用单纯形表求解线性规划 求解线性规划 m i n − 3 x 1 − 4 x 2 x 3 min -3x_1-4x_2x_3 min−…

【ArcGIS模型构建器】04:根据矢量范围批量裁剪影像栅格数据

本文以中国2000-2010-2020年3期GLC30土地覆盖数据为例,演示用模型构建器批量裁剪出四川省3年的数据。 文章目录 一、结果预览二、模型构建三、运行模型四、注意事项一、结果预览 用四川省行政区数据裁剪出的3年Globeland30(配套实验数据data04.rar中有三年中国区域成品数据)…

Java编写图片转base64

图片转成base64 url , 在我们的工作中也会经常用到,比如说导出 word,pdf 等功能,今天我们尝试写一下。 File file new File("");byte[] data null;InputStream in null;ByteArrayOutputStream out null;try{URL url new URL(&…

NAS搭建指南三——私人云盘

一、私人云盘选择 我选择的是可道云进行私人云盘的搭建可道云官网地址可道云下载地址,下载服务器端和 Windows 客户端可道云官方文档 二、环境配置 PHP 与 MySQL 环境安装:XAMPP 官网地址 下载最新的 windows 版本 安装时只勾选 MySQL 与 PHP相关即可…

信号继电器驱动芯片(led驱动芯片)

驱动继电器需要配合BAV99(防止反向脉冲)使用 具体应用参考开源项目 电阻箱 sbstnh/programmable_precision_resistor: A SCPI programmable precision resistor (github.com) 这个是芯片的输出电流设置 对应到上面的实际开源项目其设置电阻为1.5K&…

侯捷C++面向对象程序设计笔记(上)-Object Based(基于对象)部分

基于对象就是对于单一class的设计。 对于有指针的:complex.h complex-test.cpp 对于没有指针的: string.h string-test.cpp https://blog.csdn.net/ncepu_Chen/article/details/113843775?spm1001.2014.3001.5501#commentBox 没有指针成员——以复数co…

力扣第55题 跳跃游戏 c++ 贪心 + 覆盖 加暴力超时参考

题目 55. 跳跃游戏 中等 相关标签 贪心 数组 动态规划 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true &…

【RocketMQ系列十二】RocketMQ集群核心概念之主从复制生产者负载均衡策略消费者负载均衡策略

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…

自动驾驶之—车道线感知

零、前言 : 最近在学习自动驾驶方向的东西,简单整理一些学习笔记,学习过程中发现宝藏up 手写AI 一、视觉系统坐标系 视觉系统一共有四个坐标系:像素平面坐标系(u,v)、图像坐标系(x,y&#xff09…

开源WAF--Safeline(雷池)测试手册

长亭科技—雷池(SafeLine)社区版 官方网站:长亭雷池 WAF 社区版 (chaitin.cn) WAF 工作在应用层,对基于 HTTP/HTTPS 协议的 Web 系统有着更好的防护效果,使其免于受到黑客的攻击 1.1 雷池的搭建 1.1.1 配置需求 操作系统:Linux 指令架构&am…

【数据结构与算法】二叉树的运用要点

目录 一,二叉树的结构深入认识 二,二叉树的遍历 三,二叉树的基本运算 3-1,计算二叉树的大小 3-2,统计二叉树叶子结点个数 3-3,计算第k层的节点个数 3-4,查找指定值的结点 一,二叉…

Spring底层原理(二)

Spring底层原理(二) BeanFactory的实现 //创建BeanFactory对象 DefaultListableBeanFactory factory new DefaultListableBeanFactory(); //注册Bean定义对象 AbstractBeanDefinition beanDefinition BeanDefinitionBuilder.genericBeanDefinition(SpringConfig.class).set…

搭建Pytorch的GPU环境超详细

效果 1、下载和安装VS2019 https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/ 登录需要用户名和密码 安装后需要联网下载组件的,安装的时候要勾选使用C++的桌面开发 2、下载和安装显卡驱动 查看自己的显卡型号 从英伟达下载和安装最新驱动

Python学习笔记——MYSQL,SQL核心

食用说明:本笔记适用于有一定编程基础的伙伴们。希望有助于各位! SQL语言分类 SQL注释 库管理 表管理 数据操作 分组聚合 分页限制 需要注意的是关键字的顺序不可以错乱,否则会报错其中LIMIT关键字的n是指从第n个开始,m是指查…

【Zero to One系列】微服务Hystrix的熔断器集成

前期回顾: 【Zero to One系列】springcloud微服务集成nacos,形成分布式系统 【Zero to One系列】SpringCloud Gateway结合Nacos完成微服务的网关路由 1、hystrix依赖包 首先引入hystrix相关的依赖包,版本方面自己和项目内相对应即可&#…

Electron 学习

Electron基本简介 如果你可以建一个网站,你就可以建一个桌面应用程序。Eletron 是一个使用 JavaScript, HTML和 CSS等Web 技术创建原生程序的框架,它负责比较难搞的部分,你只需把精力放在你的应用的核心上即可。 Electron 可以让你使用纯 Jav…

kr第三阶段(二)32 位汇编

编译与链接 环境配置 masm32 masm32 是微软的 masm32 的民间工具集合。该工具集合除了 asm32 本身的汇编器 ml 外还提供了: SDK 对应的函数声明头文件和 lib 库。32 位版本的 link(原版本是 16 位,这里的 32 位版本的 link 来自 VC 6.0&a…

OS 处理机调度

目录 处理机调度的层次 高级调度 作业 作业控制块 JCB 作业调度的主要任务 低级调度 中级调度 进程调度 进程调度时机 进程调度任务 进程调度机制 排队器 分派器 上下文切换器 进程调度方式 非抢占调度方式 抢占调度方式 调度算法 处理机调度算法的目标 处理…