TDengine 时序数据的保留策略
“TDengine除vnode分片之外,还对时序数据按照时间段进行分区。每个数据文件只包含一个时间段的时序数据,时间段的长度由DB的配置参数days决定。这种按时间段分区的方法还便于高效实现数据的保留策略,只要数据文件超过规定的天数(系统配置参数keep),将被自动删除。而且不同的时间段可以存放于不同的路径和存储介质,以便于大数据的冷热管理,实现多级存储。”
可以看出,时序数据的保留策略是由keep和days这两个参数牢牢把控的。但是,如果我们想更加深入地理解TDengine时序数据的存储逻辑,从而优化性能的话,只知道上面这些是不够的。
官方文档关于keep和days的描述是这样的:
keep:数据库中数据保留的天数,单位为天,默认值:3650
days:一个数据文件存储数据的时间跨度,单位为天,默认值:10
TDengine通过keep和days严格控制插入数据的时间戳范围:对于过去的数据,不可以超出当前时间减去keep的时间戳值;对于未来的数据,不可以超出当前时间加上days的时间戳值。
我们假设某数据库的keep参数为7,days参数为3,当前时间为某月9日的0点0分。
由于keep为7,所以2日(9-7)之前的数据一定是不可以写入的。再加上限制未来时间数据的插入,12日(9+3)之后的数据也是不可以插入的。通过这样的方式,就有了TDengine当前可处理数据的时间范围time range(彩色范围),当你试图写入位于灰色时间区域的数据时——就会看到“timestamp out of time range”的提示了。
这组图代表了随着当前时间轴的移动,数据文件的分布情况和可写入数据范围的变化。


随着时间的推移,数据的时间戳会与系统时间做计算,一旦超过keep天数,就会被识别为过期数据,等到这个数据文件内的所有数据都过期后,这个数据文件才会被从计算机上清除。
以上述组图为例,由于2日和4日的数据是在同一个数据文件(Data File 1)中,4日的数据最多可以保留到11日结束,所以2日的数据同样也要保留到11日结束。所以我们可以看到,12日的时候,Data File 1已经被删除掉了。
细心的读者可能会问,假如我写入3日的数据,我是如何知道这个数据会落在345这个区间,还是123,或是234呢。其实是这样——TDengine是从1970年1月1日0时0分0秒起(EpochTime)开始,每3天划一个分区。因此,对任何一个时间戳都是“划到哪一片就算到哪一片”。
由于上述的机制删除粒度较粗,所以为了优化用户的体验,在2.1.5.0版本后,我们通过默认设置SQL查询的where timestamp的起始时间大于过期时间来实现用户侧完全可控的“过期数据删除”。所以,现在凡是过期的数据对用户都是不可见的。
虽然在物理层面上,数据仍然是以数据文件为单位删除的。但是除了对存储空间有极其精细要求的用户,绝大多数用户都是没有感知的。本次优化过后,用户不再需要为删除粒度的粗细而产生顾虑。只要安心根据自己的业务类型,灵活设置days参数的大小以找到性能最优的状况就好了。
此外,由于给定了可写入数据的时间范围(now-keep到now+days),给定了数据切分的时间范围(days),所以只要vnode目录下面的数据文件组数量小于等于keep/days向上取余+1,就可以认为自动删除机制是在正常工作的。
以上就是官方文档上所说的:“给定days与keep两个参数,一个vnode总的数据文件数目最多为:keep/days+2”的含义。
从概念上来说,“TDengine是通过vnode以及时间两个维度,对大数据进行切分,便于并行高效的管理,实现水平扩展。”但是如何让枯燥的概念能转化成自己正确的理解,还是需要学习的。《这几个神秘参数,教你TDengine集群的正确使用方式》与本文正是分别从这两个维度切入TDengine原理的,可以说是比较核心的知识点了。
对于TDengine,我们希望大家可以知其然,也知其所以然。
相关文章:
TDengine 时序数据的保留策略
“TDengine除vnode分片之外,还对时序数据按照时间段进行分区。每个数据文件只包含一个时间段的时序数据,时间段的长度由DB的配置参数days决定。这种按时间段分区的方法还便于高效实现数据的保留策略,只要数据文件超过规定的天数(系…...
Java-多线程解析1
一、线程的描述: 1、线程是一个应用程序进程中不同的执行路径比例如:一个WEB服务器,能够为多个用户同时提供请求服务;而 -> 进程是操作系统中正在执行的不同的应用程序,比如:我们可以同时打开系统的word和游戏 2、多…...
PHP 判断用户当前坐标是否在电子围栏内
可以使用射线法判断用户当前坐标点是否在电子围栏内。 具体步骤如下: 1. 将电子围栏的四个角坐标按顺序连接成一个封闭多边形。 2. 从用户当前坐标点向外发射一条射线,判断这条射线与多边形的交点个数。 3. 如果交点个数为奇数,则用户当前…...
Java版本工程管理系统源码企业工程项目管理系统简介
一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点:对草稿进行编辑&#x…...
高速缓存(cache)的原理: 了解计算机架构与性能优化
计基之存储器层次结构 Author: Once Day Date: 2023年5月9日 长路漫漫,而今才刚刚启程! 本内容收集整理于《深入理解计算机系统》一书。 参看文档: 捋一捋Cache - 知乎 (zhihu.com)iCache和dCache一致性 - 知乎 (zhihu.com)C…...
【Vue3+TS项目】硅谷甄选day04--顶部组件搭建+面包屑+路由鉴权
顶部组件搭建 顶部左侧折叠和面包屑实现 左侧菜单刷新折叠的问题解决---属性default-active 折叠之后图标不见:icon放在插槽外面----element的menu属性:collapse project\src\layout\index.vue // 获取路由对象 import { useRoute } from vue-route…...
某oa 11.10 未授权任意文件上传
漏洞简介 之前也对通达 oa 做过比较具体的分析和漏洞挖掘,前几天看到通达 oa 11.10 存在未授权任意文件上传漏洞,于是也打算对此进行复现和分析。 环境搭建 https://www.tongda2000.com/download/p2019.php 下载地址 :https://cdndown.tongda…...
Grounded Language-Image Pre-training(论文翻译)
文章目录 Grounded Language-Image Pre-training摘要1.介绍2.相关工作3.方法3.1统一构建3.2.语言感知深度融合3.3.使用可扩展的语义丰富数据进行预训练 4.迁移到既定的基准4.1.COCO上的zero-shot和监督迁移学习4.2.LVIS上的zero-shot 迁移学习4.3.Flickr30K实体上的 phrase gro…...
设计模式-行为型模式(模板方法、策略、观察者、迭代器、责任链、命令、状态、备忘录、访问者、中介者、解释器)
行为型模式:专注于对象之间的 协作 及如何通过彼此之间的交互来完成任务。行为型模式通常集中在描述对象之间的 责任 分配和 通信 机制,并提供了一些优雅解决特定问题的方案。 模板方法模式(Template Method Pattern)策略模式(Strategy Pattern)观察者模…...
全面探讨 Spring Boot 的自动装配机制
Spring Boot 是一个基于 Spring 框架的快速开发脚手架,它通过自动配置机制帮助我们快速搭建应用程序,从而减少了我们的配置量和开发成本。自动装配是 Spring Boot 的核心特点之一,它可以减少项目的依赖,简化配置文件,提…...
河道水位监测:河道水位监测用什么设备
中国地形复杂,气候多样,导致水资源分布不均,洪涝和干旱等问题时有发生。同时,人类活动也对水资源造成了很大压力,工业和农业用水增加,河道水位下降,生态环境受到威胁。因此,对河道水…...
嵌入式系统中u-boot和bootloader到底有什么区别
嵌入式软件工程师都听说过 u-boot 和 bootloader,但很多工程师依然不知道他们到底是啥。 今天就来简单讲讲 u-boot 和 bootloader 的内容以及区别。 Bootloader Bootloader从字面上来看就是启动加载的意思。用过电脑的都知道,windows开机时会首先加载…...
实验14:20211030 1+X 中级实操考试(id:2498)
实验14:20211030 1X 中级实操考试(id:2498) 一、项目背景说明二、表结构三、步骤【5 分】步骤 1:项目准备【5 分】步骤 2:完成实体类 Member【10 分】步骤 3:完成实体类 Goods【10 分】步骤 4&a…...
(字符串 ) 剑指 Offer 58 - II. 左旋转字符串 ——【Leetcode每日一题】
❓剑指 Offer 58 - II. 左旋转字符串 难度:简单 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的…...
EPICS编程
提纲 1) 为什么在EPICS上编程 2)构建系统特性:假设基本理解Unix Make 3)在libCom中可用的工具 1) 为什么在EPICS上编程 1、社区标准:EPICS合作者知道和明白EPICS结构 2、在很多操作系统之间代码移值性…...
17:00面试,还没10分钟就出来了,问的实在是太...
从外包出来,没想到死在另一家厂子 自从加入这家公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到8月一纸通知,所有人不许加班,薪资直降30%,顿时有吃不起饭的赶脚。 好在有个兄弟内推我去…...
docker都有那些工具,及工具面试题
docker介绍 Docker 是一种开源的容器化平台,可以帮助开发者将应用程序和依赖项打包到轻量级的容器中,然后部署到任何基于 Linux 的操作系统中。使用 Docker 可以大大简化开发、部署和管理应用程序的过程,使其更加快速、灵活和可靠。 Docker…...
LAMP网站应用架构
LAMP 一、LAMP概述1、各组件的主要作用2、构建LAMP各组件的安装顺序 二、编译安装Apache httpd服务1、关闭防火墙,将安装Apache所需软件包传到/opt目录下2.安装环境依赖包3.配置软件模块4.编译及安装5.优化配置文件路径,并把httpd服务的可执行程序文件放…...
C++虚函数virtual(动态多态)(纯虚函数)
怎么判断函数是虚函数还是普通函数? 用VS,在调用对象的方法的地方。。按altg ,如果他跳转到正确的函数,那也就意味着他是编译时可以确定的。。。 但是如果他跳到了这个调用对象的基类的函数,那么也就意味着他是一个运行…...
【Java 接口】接口(Interface)的定义,implements关键字,接口实现方法案例
博主:_LJaXi Or 東方幻想郷 专栏: Java | 从入门到入坟 专属:六月一日 | 儿童节 Java 接口 接口简介 🎃接口的定义 🧧接口实现类名定义 🎁接口实现类小案例 🎈后话 🎰 接口简介 &…...
别再乱加“impressionism”!Midjourney印象派风格生效的3个前置条件,90%新手忽略第2条
更多请点击: https://codechina.net 第一章:印象派风格在Midjourney中的本质误读与认知纠偏 当用户在 Midjourney 中输入 --style raw --s 750 并附加诸如 “impressionist painting” 或 “Monet style” 等提示词时,模型实际响应的并非印…...
2026 最新 Web 安全入门教程 零基础全面吃透 Web 攻防
“未知攻,焉知防”——真正的安全始于理解攻击者的思维 在日益数字化的世界中,Web安全工程师已成为企业防护体系的“数字盾牌”。本文将提供一条清晰的进阶路径,助你在2025年的网络安全领域脱颖而出。 一、认知篇:理解安全本质 …...
Postgresql基础实践教程(二)
十三、查询会员的预订开始时间 题目 如何列出名为"David Farrell"的会员的所有预订开始时间? 预期结果 starttime 2012-09-18 09:00:00 2012-09-18 17:30:00 2012-09-18 13:30:00 2012-09-18 20:00:00 2012-09-19 09:30:00 2012-09-19 15:00:00 2012-09-19 12:00:…...
Onekey终极指南:3分钟掌握Steam清单下载完整教程
Onekey终极指南:3分钟掌握Steam清单下载完整教程 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey Onekey是一款专业的Steam Depot Manifest下载工具,能够帮助游戏玩家和开…...
【深度解析】Gemini 3.5 Flash:面向 Agentic Workflow 的高速多模态大模型选型与实战
摘要 本文围绕 Gemini 3.5 Flash 的技术定位、Agentic Workflow、多模态能力、速度优势与模型选型策略展开分析,并给出可落地的 Python 调用示例,帮助开发者判断其在编码助手、智能体、多模态应用中的适用边界。背景介绍 近两年,大模型迭代速…...
CDCS金融算法挑战赛终极指南:甜橙金融与融360实战案例深度解析
CDCS金融算法挑战赛终极指南:甜橙金融与融360实战案例深度解析 【免费下载链接】CDCS Chinese Data Competitions Solutions 项目地址: https://gitcode.com/gh_mirrors/cd/CDCS CDCS(Chinese Data Competitions Solutions)是中国数据…...
GLM-4V-9B性能优化技巧:提升推理速度、降低显存占用的5种方法
GLM-4V-9B性能优化技巧:提升推理速度、降低显存占用的5种方法 【免费下载链接】glm-4v-9b GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源版本。 项目地址: https://ai.gitcode.com/openMind/glm-4v-9b GLM-4V-9B是智谱AI推出的GLM-4系列开…...
Python爬虫实战:requests + BeautifulSoup4采集经典标靶网站哲理名言,并导出结构化文件!
㊗️本期内容已收录至专栏《Python爬虫实战》,持续完善知识体系与项目实战,建议先订阅收藏,后续查阅更方便~ ㊙️本期爬虫难度指数:⭐ (入门级) 🉐福利: 一次订阅后,专栏内的所有文章…...
Zed与VSCode争议背后真相:性能瓶颈到底是谁的锅
别被骗了!Zed比VS Code快?真正的原因让你哭笑不得!本文深入分析开发者社区对Zed编辑器与VS Code的争议,澄清性能瓶颈的真相在于语言服务器协议(LSP)而非编辑器本身,揭示Zed真正的优势在于原生Vim模式和架构简洁性&…...
14404黄大年茶思屋榜文144期第四题AI辅助故障自动检测、复现和故障自动定界定位
开源鸿蒙难题揭榜第四题:AI辅助故障自动检测复现定位 AI零偏差标准化脱敏解题全集 摘要 本文严格遵循AI无偏差标准化解题框架,完成鸿蒙第四期系统故障智能运维难题全维度规范化拆解,全文一字未改复刻官方脱敏原题内容,精准还原隐藏…...
