tencent cloud

TDSQL Boundless

产品动态
产品简介
产品概述
应用场景
产品架构
实例类型
兼容性说明
使用规范建议
自研内核
内核概述
内核版本更新动态
功能类特性
性能类特性
产品计费
计费概述
购买方式
价格详情
续费说明
欠费说明
退费说明
快速入门
创建实例
连接实例
用户指南
数据迁移
数据同步/订阅
实例管理
参数配置
账号管理
安全组
备份与恢复
数据库审计
标签管理
实践教程
Online DDL 的技术演进与使用实践
锁机制解析与问题排查实践
数据智能调度及相关性能优化实践
TDSQL Boundless 选型指南与实践教程
开发指南
开发指南(MySQL 兼容模式)
开发指南(HBase 兼容模式)
性能调优
性能调优概述
SQL 调优
DDL 调优
性能白皮书
性能概述
TPC-C 测试
Sysbench 测试
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Security Group APIs
Task APIs
Backup APIs
Rollback APIs
Parameter APIs
Database APIs
Data Types
Error Codes
通用参考
系统原理
SQL 参考
数据库参数说明
TPC-H 基准测试数据模型参考
错误码信息
安全与合规
常见问题
服务协议
服务等级协议
服务条款
隐私政策
数据处理和安全协议
联系我们
词汇表

过期数据删除

PDF
聚焦模式
字号
最后更新时间: 2026-02-10 10:59:29
系统提供了强大的数据版本控制和生命周期管理功能,主要包括:
最大版本数:控制每个单元格保留的历史版本数量。
最小版本数:与 TTL 结合使用,确保在数据过期时保留指定数量的版本。
Time To Live (TTL):为列族设置数据存活时间,自动删除过期数据。
注意:
当前版本仅支持 ColumnFamily 级别的 TTL/最大版本数/最小版本数,不支持 Cell 级别的 TTL/最大版本数/最小版本数。

最大版本数

作用:通过 HColumnDescriptor 设置每个列族中每个单元格保留的最大版本数。
默认值:1
机制:系统不会覆盖数据,而是通过时间戳追加新版本。旧版本会在 Major Compaction 时被删除。
建议:请根据应用需求调整最大版本数。不建议将最大版本数设置过高(如数百),否则会导致存储文件过大。

最小版本数

作用:通过 HColumnDescriptor 设置每个列族中每个单元格保留的最小版本数。
默认值:0(表示禁用)。
使用场景:与 TTL 结合使用,配置如“保存最近 T 分钟的数据,最多 N 个版本,但至少保留 M 个版本”(M < N)。
限制:仅在列族启用 TTL 时有效;必须小于最大版本数。

TTL

功能说明
作用:为列族设置 TTL( Time To Live ) (以秒为单位),HBase 会在数据过期后自动删除该列族中的所有行,包括当前版本和旧版本。
时间基准:TTL 时间以 UTC 时间为准。
清理机制:在 Minor Compaction 过程中,HBase 会删除仅包含过期数据的存储文件。
配置参数
MIN_VERSIONS:如果设置了最小版本数(MIN_VERSIONS)为非零值,TTL 功能将失效。

配置示例

建表时设置 ColumnFamily 的 TTL/min/maxVersions 属性
TableName tableName = createTDSQLTableName("ht1");
byte[] CF1 = Bytes.toBytes("cf1");
byte[] CF2 = Bytes.toBytes("cf2");

// 创建表描述符
TableDescriptorBuilder tdb = TableDescriptorBuilder.newBuilder(tableName);

// 配置第一个列族:TTL=2秒,最小版本=2,最大版本=5
tdb.setColumnFamily(
ColumnFamilyDescriptorBuilder.newBuilder(CF1)
.setTimeToLive(2)
.setMinVersions(2)
.setMaxVersions(5)
.build()
);

// 配置第二个列族:TTL=3秒,最小版本=4,最大版本=10
tdb.setColumnFamily(
ColumnFamilyDescriptorBuilder.newBuilder(CF2)
.setTimeToLive(3)
.setMinVersions(4)
.setMaxVersions(10)
.build()
);

// 构建表并创建
try (Admin admin = connection.getAdmin()) {
admin.createTable(tdb.build());
}
修改 ColumnFamily 的 TTL/min/maxVersions 属性
TableName tableName = TableName.valueOf("ht1");
byte[] CF2 = Bytes.toBytes("cf2");

try (Admin admin = connection.getAdmin()) {
// 获取当前列族配置
ColumnFamilyDescriptor currentDesc = admin.getDescriptor(tableName)
.getColumnFamily(CF2);
// 基于现有配置创建新配置(保留其他设置)
ColumnFamilyDescriptor newDesc = ColumnFamilyDescriptorBuilder.newBuilder(currentDesc)
.setTimeToLive(10) // 修改 TTL=10秒
.setMinVersions(2) // 修改最小版本=2
.setMaxVersions(5) // 修改最大版本=5
.build();
// 应用修改
admin.modifyColumnFamily(tableName, newDesc);
System.out.println("列族配置更新成功");
}

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈