在实际生产中,有些业务只希望保留最近一段时间的数据(热数据),并对于使用频率很低且不断积累的过期数据(冷数据)采用存储成本更低的方式保存,同时又可以利用这些冷数据进行分析统计业务。
综上所述,业务对处理冷数据,主要有以下需求:
- 可以定时清理冷数据。
- 更低的冷数据存储成本。
- 归档后仍然可以供后台业务进行分析统计。
PolarDB-X v2.4.1提供了全新的数据TTL能力,支持行级、分区级的数据过期清理、归档等,可以结合列存索引适配oss对象存储,可以提供更灵活的数据TTL。
整个TTL的使用可以分为三部分:
- 已有的数据表,配置TTL策略,比如:指定TTL的时间列及其数据的存活时间
- 定义TTL的清理任务,比如:主动清理或者定时自动清理,及关注清理任务的状态
- 定义数据归档,比如:TTL默认可以只做数据清理,但也可以额外配置被清理的数据进行转储归档

配置TTL策略,操作例子:
# 针对已有的数据表,动态配置TTL
ALTER TABLE `orders_test`
MODIFY TTL
SET
TTL_EXPR = `date_field` EXPIRE AFTER 2 MONTH TIMEZONE '+08:00';指定 orders_test表的date_field列为TTL定义的时间列,只保存最近两个月的数据(数据过期时间为2个月),定时清理任务执行的时区为东八区
定义TTL的清理任务,操作例子:
- 手动执行
# 手动执行
ALTER TABLE `orders_test` CLEANUP EXPIRED DATA;- 定时自动执行
# 定时执行,指定为每天的凌晨2点运行数据清理
ALTER TABLE `orders_test` MODIFY TTL \
SET TTL_JOB = CRON '0 0 2 */1 * ? *' TIMEZONE '+08:00';定义数据归档,操作例子:
# 创建数据归档的数据空间
CREATE TABLE `orders_test_archive`
LIKE `orders_test`
ENGINE = 'Columnar' ARCHIVE_MODE = 'TTL';注意:
- ENGINE的值必须为'Columnar',不允许其他值,代表使用列存引擎
- 如果对原主库执行了DDL变更,比如加列,数据归档表也会自动执行加列,可以确保后续的归档任务不中断
更多使用和原理,请参考文档:
- TTL原理概述(https://help.aliyun.com/zh/polardb/polardb-for-xscale/principle-overview)
- TTL表的定义与创建(https://help.aliyun.com/zh/polardb/polardb-for-xscale/definition-and-creation-of-ttl-table)
- TTL表的过期数据清理(https://help.aliyun.com/zh/polardb/polardb-for-xscale/ttl-table-expired-data-cleansing)
- 归档表语法说明(https://help.aliyun.com/zh/polardb/polardb-for-xscale/archive-table-syntax-description)
最后修改时间:2024-12-30 11:23:33
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




