《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X的TTL表的使用和原理(1)

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: 《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X的TTL表的使用和原理(1)

作者:郁光辉阿里云PolarDB-X技术专家

 

TTLTime to Leave表示数据在表中的生存时间,过期后会自动删除。

 

实际应用中很多场景下数据与时间强相关,比如订单系统、快递电商系统以及系统日志等。一部分数据有很强的时效性,并且数据会随时间快速增长,热度下降也很快,可能会有点查、范围查询的请求,但该部分请求多访问比较新的数据,老数据很少会被访问到。如果数据一直存储在PolarDB中,会占用表空间,意味着存储成本会上升,且查询效率会下降。

 

image.png

 

与其一直付出代价维护数据,不如定期将部分数据删除或归档到成本更低的数据库中。比如可以归拢到列存数据库或OSS等系统中,关系型数据库中存储需要查询的较新数据,很少执行的数据存储在冷存储中。

 

此前,我们比较习惯于比如在MySQL中直接通过 delete+where语句删除数据,但问题在于如果数据规模较大,MySQL会认为这是一条需要全表扫描的SQL,会锁住整个B+Tree,也可能会产生大量Binlog。

 

因为删数据需要事务性保证,会占用MySQL大量磁盘空间。如果数据量太大,甚至会因为MySQL内存不够导致删失败,是一种比较危险的操作。即使删除成功,B+Tree占用的空间还在,并没有真正释放出磁盘空间,存储成本没有下降。

 

一般来说,大规模delete语句之后,还需要补充optimize操作,即重建B+Tree,会对所有数据进行搬运,同样可能造成锁表。

 

image.png

 

因此,我们考虑,是否可以将表空间按照时间进行分区,每个分区包含不同时间范围的数据。但PolarDB-X是分布式数据库,本身具有分区表功能。如上图所示,一张PolarDB-X表已经被按照ID做哈希分为四个分区,数据均匀分布在四个分区中,但是每个分区中的数据包含所有时间范围分区,而我们考虑能否在垂直方向上将每个分区再按照时间进行拆分,即上图中的partition by range columnsdate

 

在PolarDB-X分区表基础上,再叠加一层按照时间维度的拆分,直接作用到物理表上。如要删除老分区,只需对每个分区做drop partition的操作,即可实现快速删除的效果。而对于数据库内部来说,这只涉及到元数据操作,并没有真正发生磁盘IO。数据删除之后,后台线程可以慢慢将该部分数据删除,使得delete操作成为比较轻量级的操作。

 

针对部分不希望被直接删除的老数据,我们提供了数据归档功能,能够将数据归档到OSS存储中,并且提供了一定的存储能力。

 

image.png

 

PolarDB-X除了支持分区表之外,还支持全局二级索引,且全局二级索引也能够分布在不同数据节点上。因此,全局二级索引也可以看作分区表,数据行数与主表完全一样,只是包含的列数比较少,是主表的子集。

 

使用TTL表功能可以对几个重要参数进行设定。

 

每个分区的时间粒度:比如天、月、年。

 

expireAfterCount:数据过了多少个周期之后自动删除。

 

preAllocateCount:提前多少个时间周期创建分区。

 

PivotDate:时间基准,即以该时间为基准划定expireAfterCount和preAllocateCount 。默认为当前时间,也可以指定过去或未来的其他时间,可以是用表达式的方式。

 

上方图示为创建时的场景,下方图示为过了一个时间周期之后,最底下创建出了第十个分区,第一个分区已经过期,会删除或归档到OSS。其本质类似于滑动窗口的结构。

 

image.png

 

TTL表在PolarDB-X的database有两个模式,分别为DRDS和auto。TTL表只能在auto表中使用,创建方式很简单,只需在正常的create table后跟上TTL特有语法即可。

 

TTL语法中可以指定7个参数,如图所示,必填参数有两个,其一为希望用哪一列做TTL的分区列,其二为时间分区的间隔。另外,disable schedule指创建表时不要默认自动创建定时任务,如果不加该参数,则默认会自动创建;start with加上日期参数表示TTL表创建时第一个分区的初始时间。我们不希望系统内有些历史数据被放到TTL表中时直接被删除,或很多历史数据归档到会路由到同一分区,这将导致创建出的TTL表的第一个分区会包含非常多的数据。而如果提供了start with,可以将很多早期历史数据按照时间粒度做路由,避免上述情况的发生。

 


《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X的TTL表的使用和原理(2): https://developer.aliyun.com/article/1228587?groupCode=polardbforpg

 

 

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
8天前
|
存储 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 8 数据库生态
PolarDB是一款开源的云原生分布式数据库,源自阿里云商业产品。为降低使用门槛,PolarDB携手伙伴打造了完整的开源生态,涵盖操作系统、芯片、存储、集成管控、监控、审计、开发者工具、数据同步、超融合计算、ISV软件、开源插件、人才培养、社区合作及大型用户合作等领域。通过这些合作伙伴,PolarDB提供了丰富的功能和服务,支持多种硬件和软件环境,满足不同用户的需求。更多信息请访问[PolarDB开源官方网站](https://openpolardb.com/home)。
44 4
|
1月前
|
运维 关系型数据库 分布式数据库
阿里云PolarDB:引领云原生数据库创新发展
阿里云PolarDB引领云原生数据库创新,2024云栖大会将分享其最新发展及在游戏行业的应用。PolarDB凭借弹性、高可用性、多写技术等优势,支持全球80多个站点,服务1万多家企业。特别是针对游戏行业,PolarDB助力Funplus等公司实现高效运维、成本优化和业务扩展。通过云原生能力,PolarDB推动游戏业务的全球化部署与快速响应,提升用户体验并保障数据安全。未来,PolarDB将继续探索AI、多云管理等前沿技术,为用户提供更智能的数据基础设施。
|
1月前
|
容灾 关系型数据库 分布式数据库
PolarDB分布式版:与云融合的分布式数据库发展新阶段
PolarDB分布式版标志着分布式数据库与云融合的新阶段。它经历了三个发展阶段:从简单的分布式中间件,到一体化分布式架构,再到云原生分布式数据库。PolarDB充分利用云资源的弹性、高性价比、高可用性和隔离能力,解决了大规模数据扩展性问题,并支持多租户场景和复杂事务处理。零售中台的建设背景包括国家数字化转型战略及解决信息孤岛问题,采用分布式数据库提升高可用性和性能,满足海量订单处理需求。展望未来,零售中台将重点提升容灾能力、优化资源利用并引入AI技术,以实现更智能的服务和更高的业务连续性。
|
1月前
|
存储 关系型数据库 分布式数据库
PolarDB PostgreSQL版:商业数据库替换与企业上云首选
PolarDB PostgreSQL版是商业数据库替换与企业上云的首选。其技术架构实现存储计算分离,具备极致弹性和扩展性,支持Serverless、HTAP等特性。产品在弹性、性能、成本优化和多模处理方面有显著提升,如冷热数据自动分层、Ganos多模引擎等。已在汽车、交通、零售等行业成功应用,典型案例包括小鹏汽车、中远海科等,帮助企业大幅降低运维成本并提高业务效率。
48 13
|
1月前
|
关系型数据库 分布式数据库 数据库
瑶池数据库大讲堂|PolarDB HTAP:为在线业务插上实时分析的翅膀
瑶池数据库大讲堂介绍PolarDB HTAP,为在线业务提供实时分析能力。内容涵盖MySQL在线业务的分析需求与现有解决方案、PolarDB HTAP架构优化、针对分析型负载的优化(如向量化执行、多核并行处理)及近期性能改进和用户体验提升。通过这些优化,PolarDB HTAP实现了高效的数据处理和查询加速,帮助用户更好地应对复杂业务场景。
|
1月前
|
关系型数据库 Serverless 分布式数据库
瑶池数据库微课堂 | PolarDB Serverless弹性&价格力观测
瑶池数据库微课堂介绍阿里云PolarDB Serverless的弹性与性价比优势。通过瑶池解决方案体验馆,用户可免费实操,直观感受Serverless的秒级弹性及超高性价比。内容涵盖Serverless概念、操作步骤、压测演示及性能曲线分析,展示PolarDB在不同负载下的自动扩展能力。适合希望了解云数据库弹性和成本效益的技术人员。
|
1月前
|
关系型数据库 OLAP 分布式数据库
瑶池数据库微课堂|PolarDB/RDS+ADB Zero-ETL:一种免费、易用、高效的数据同步方式
瑶池数据库微课堂介绍阿里云PolarDB/RDS与ADB的Zero-ETL功能,实现免费、易用、高效的数据同步。内容涵盖OLTP与OLAP的区别、传统ETL存在的问题及Zero-ETL的优势(零成本、高效同步),并演示了从RDS MySQL到AnalyticDB MySQL的具体操作步骤。未来将优化和迭代此功能,提供更好的用户体验。
|
1月前
|
关系型数据库 分布式数据库 PolarDB
[PolarDB实操课] 02.使用云起实验室资源快速体验PolarDB分布式版
本次课程由阿里云PolarDB开源架构师黄心雨分享,重点介绍如何使用云起实验室资源快速体验PolarDB分布式版。主要内容包括: 1. **PolarDB-X的四种安装方法**:Docker、PXD工具、Kubernetes和源码编译。 2. **容器技术简介**:解释容器在云原生环境中的作用,解决代码跨环境迁移问题。 3. **云起实验室实操**:通过云起实验室提供的零门槛平台,快速部署PolarDB-X,体验其主要功能。 4. **课程小结**:总结PolarDB-X的安装方式及实际操作步骤,并展望后续课程内容。
|
1月前
|
存储 关系型数据库 分布式数据库
[PolarDB实操课] 01.PolarDB分布式版架构介绍
《PolarDB实操课》之“PolarDB分布式版架构介绍”由阿里云架构师王江颖主讲。课程涵盖PolarDB-X的分布式架构、典型业务场景(如实时交易、海量数据存储等)、分布式焦点问题(如业务连续性、一致性保障等)及技术架构详解。PolarDB-X基于Share-Nothing架构,支持HTAP能力,具备高可用性和容错性,适用于多种分布式改造和迁移场景。课程链接:[https://developer.aliyun.com/live/253957](https://developer.aliyun.com/live/253957)。更多内容可访问阿里云培训中心。
[PolarDB实操课] 01.PolarDB分布式版架构介绍
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
让PolarDB更了解您--PolarDB云原生数据库核心功能体验馆
让PolarDB更了解您——PolarDB云原生数据库核心功能体验馆,由阿里云数据库产品事业部负责人宋震分享。内容涵盖PolarDB技术布局、开源进展及体验馆三大部分。技术布局包括云计算加速数据库演进、数据处理需求带来的变革、软硬协同优化等;开源部分介绍了兼容MySQL和PostgreSQL的两款产品;体验馆则通过实际操作让用户直观感受Serverless、无感切换、SQL2Map等功能。
107 7

热门文章

最新文章

相关产品

  • 云原生数据库 PolarDB