跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

Apache IoTDB 数据保留时间管理:TTL 设置与操作实践

Apache IoTDB 支持设备级别数据保留时间(TTL)管理,系统依据 TTL 自动清理过期数据以优化存储与查询性能。TTL 基于毫秒计时,依据数据点时间而非写入时间判断过期。设置路径需符合前缀规则,支持多级匹配且精确路径优先级更高。系统最多支持 1000 条 TTL 规则。通过 SET TTL、UNSET TTL 及 SHOW TTL 等命令可灵活管理数据生命周期,INF 表示无限保留。修改 TTL 可能导致数据可见性波动,物理删除在压缩时完成。

LinuxPan发布于 2026/3/20更新于 2026/7/2156 浏览
Apache IoTDB 数据保留时间管理:TTL 设置与操作实践

引言

IoTDB 支持在设备(device)级别设置数据保留时间(TTL),系统会根据设定的 TTL 自动清理过期数据,从而有效管理存储空间并确保查询性能。TTL 默认采用毫秒计时,数据过期后将不可查询且禁止写入,但实际物理删除会在数据压缩时完成。需要注意:修改 TTL 设置可能导致数据可见性短暂波动,若缩短或取消 TTL 设置,原先因 TTL 限制而不可见的数据可能会重新显示。

TTL 设置为毫秒,不受配置文件时间精度影响 TTL 变更可能影响数据的可查询性 系统最终会移除过期数据,但存在延迟 TTL 判断数据是否过期依据的是数据点时间,非写入时间 系统最多支持设置 1000 条 TTL 规则,达到上限需先删除部分规则才能设置新规则

一、TTL 路径规则与优先级

1.1 路径规则

设置的路径 path 只支持前缀路径(即路径中间不能带 * ,且必须以 ** 结尾),该路径会匹配到设备,也允许用户指定不带星的 path 为具体的 database 或 device,当 path 不带 * 时,会检查是否匹配到 database,若匹配到 database,则会同时设置 path 和 path.**。 注意:设备 TTL 设置不会对元数据的存在性进行校验,即允许对一条不存在的设备设置 TTL。

合格的 path:root.** root.db.** root.db.group1.** root.db root.db.group1.d1 不合格的 path:root..db root.**.db. root.db.*

1.2 智能路径扩展与优先级

当一个设备适用多条 TTL 规则时,优先适用较精确和较长的规则。例如对于设备'root.bj.hd.dist001.turbine001'来说,规则'root.bj.hd.dist001.turbine001'比'root.bj.hd.dist001.'优先,而规则'root.bj.hd.dist001.'比'root.bj.hd.**'优先。

为兼容历史版本,IoTDB 实现智能路径扩展机制。当用户输入 SET TTL TO root.sg 360000 时,系统自动转换。

SET TTL TO root.sg.** 360000;

系统对路径合法性进行严格校验,以下为合法路径示例:

root.** root.db.** root.db.group1.** root.db.group1.d1

非法路径示例:

root.*.db -路径中间包含非法星号
root.**.db -路径结尾前存在星号
root.db.*-路径结尾星号前无字符

规则数量也有限制,IoTDB 系统最多支持 1000 条 TTL 规则。当达到数量上限的时候,需要先删除部分规则才能设置新规则。需要限制确保系统性能不受过量规则影响。

二、TTL 设置操作

set ttl 操作可以理解为设置一条 TTL 规则,比如 set ttl to root.sg.group1.** 就相当于对所有可以匹配到该路径模式的设备挂载 ttl。unset ttl 操作表示对相应路径模式卸载 TTL,若不存在对应 TTL,则不做任何事。若想把 TTL 调成无限大,则可以使用 INF 关键字。

语法

设置 TTL 的标准语法:

SET TTL TO<pathPattern><ttlValue>;

示例:

set ttl to pathPattern 360000;

pathPattern 是前缀路径,即路径中间不能带 * 且必须以 ** 结尾。pathPattern 匹配对应的设备。为了兼容老版本 SQL 语法,允许用户输入的 pathPattern 匹配到 db,则自动将前缀路径扩展为 path.。 例如,写 set ttl to root.sg 360000 则会自动转化为 set ttl to root.sg.** 360000,转化后的语句对所有 root.sg 下的 device 设置 TTL。 但若写的 pathPattern 无法匹配到 db,则上述逻辑不会生效。如写 set ttl to root.sg.group 360000,由于 root.sg.group 未匹配到 db,则不会被扩充为 root.sg.group.。也允许指定具体 device,不带 *

三、取消 TTL 操作

3.1 语法

取消 TTL 的标准语法:

unset ttl from root.**

示例:

unset ttl from root.ln

取消设置 TTL 后,root.ln 路径下所有的数据都会被保存。

unset ttl from root.sgcc.**

取消设置 root.sgcc 路径下的所有的 TTL。

unset ttl from root.**
3.2 批量取消

IoTDB 是支持批量取消 TTL。

取消整个存储组:

UNSET TTL FROM root.bj.**;

取消多级分组 TTL:

UNSET TTL FROM root.sg.group1.**;

四、显示 TTL 信息

显示 TTL 的 SQL 语句如下

显示所有的 TTL:

SHOW ALL TTL;

示例:

+--------------+--------+
| path         | TTL    |
+--------------+--------+
| root.**      | 55555555|
| root.sg2.a.**| 44440000|
+--------------+--------+

显示指定路径 TTL:

SHOW TTL ON root.db.**;

示例:

+--------------+--------+
| path         | TTL    |
+--------------+--------+
| root.db.**   | 55555555|
| root.db.a.** | 44440000|
+--------------+--------+

显示设备的 TTL:

show devices

示例:

+---------------+---------+---------+
| Device        | IsAligned| TTL    |
+---------------+---------+---------+
| root.sg.device1| false   | 36000000|
| root.sg.device2| true    | INF     |
+---------------+---------+---------+

显示表级 TTL:

SHOW TABLES DETAILS;

示例:

+---------+-------+----------+
| TableName| TTL(ms)| Status   |
+---------+-------+----------+
| bean     | 300   | PRE_CREATE|
| grass    | 1000  | USING    |
| bamboo   | 300   | USING    |
| flower   | INF   | USING    |
+---------+-------+----------+

IoTDB 数据库 TTL 显示结果包含路径、TTL 值和状态信息。INF 表示无限 TTL,数字表示具体毫秒数。

五、总结

Apache IoTDB 的 TTL 机制通过智能化的数据生命周期管理,帮助企业实现存储成本与查询性能的平衡。本文从路径规则、适用规则到操作实践,全面解析了 IoTDB 的 TTL 管理机制,帮助构建高效可靠的数据保留时间管理体系。

目录

  1. 引言
  2. 一、TTL 路径规则与优先级
  3. 1.1 路径规则
  4. 1.2 智能路径扩展与优先级
  5. 二、TTL 设置操作
  6. 三、取消 TTL 操作
  7. 3.1 语法
  8. 3.2 批量取消
  9. 四、显示 TTL 信息
  10. 五、总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • HTML 网页结构搭建:从语义化标签到整站规划
  • AI 视频生成模型构建与实战指南
  • Awesome OpenClaw Skills:本地 AI 助手技能库精选与使用指南
  • Verilog 语法详解:从入门到精通
  • C++ unordered 容器使用与模拟实现笔记
  • RAG 框架全览:15 种关键技术综述
  • 算法:位运算详解及常用技巧 (& ^ ~ -n n-1)
  • 具身智能 Wrapper 架构解析与 Python 实战
  • Claude Code 代码审查功能详解:智能识别潜在问题
  • Python steamapi 库:Steam 数据获取与五大应用场景
  • SkyWalking 多语言探针现状:.NET、C++ 与 Lua 支持分析
  • Python pip 包管理工具使用指南
  • AI绘画入门:从零掌握文生图核心技术
  • AI 编程工具对比:Cursor、GitHub Copilot 与 Claude Code
  • 基于百度天气 API 的空气质量 WebGIS 可视化实践
  • C++ 二叉搜索树:从原理到增删查实现
  • 在 MySQL 中查找重复值
  • 昇腾 NPU 部署 Llama 2 模型的性能测试与优化实践
  • Spring Web MVC 核心概念与实战指南
  • C#读取 Fanuc 机器人数学信号

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online