PolarDB-X 数据 TTL 过期删除(一)| 学习笔记

简介: 快速学习 PolarDB-X 数据 TTL 过期删除。

开发者学堂课程【PolarDB-X 开源分布式数据库进阶课程 :PolarDB-X 数据 TTL 过期删除(一)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1202/detail/18333


PolarDB-X 数据 TTL 过期删除

 

内容介绍:

一、TTL 功能介绍

二、实验演示

三、TTL 原理介绍

四、TTL 性能

 

一、TTL 功能介绍

今天的内容是 ttl 表的使用和原理,相信参加过前面几期课程的对 polarDB-x 有了一定的了解,它是一个存储计算分离的 otp 关系型数据库,今天的内容课程主要分为三个比较大的模块,第一个是 ttl 功能的介绍以及在实验室中的演示,然后等会儿会带着大家一起演示,一起在实验室中操作了一遍 ttl 表的所有的功能,感兴趣的话,可以大家打开实验室一起来做一下这个实验,第二块是表的原理的介绍,polarDB-dx 开源版的内核是如何实现提交表,然后最后一部分是 ttl 表的性能的一个测试,首先在介绍ttl表之前,先跟大家探讨一下为什么我们需要一个体贴表示这样的功能,因为你想如果实际开发过一些应用系统的话,其实大家会发现应用系统中有很多的场景,它的数据是跟时间强相关的,然后典型的话就比如说订单系统或者快递电商以及系统的日志等等,然后这一部分的数据它有一个很长的时效性,然后并且他的数据随时间增长会很快,但是他的热度下降的也很快然后有可能会有一些检查甚至是范围查询的一些请求。但这部分请求访问的也基本上都是比较新的数据,老的数据的话基本上是很少会被访问到的,那如果数据一直存储在我们的数据库中,一直存储在 polarDB-x 中,它是会占用着你的表空间的,那表空间其实意味着你的存储成本会上升,那你查询的效率会下降,与其一直付出代价,来维护着这一些数据,不如去定期的把这部分数据给删除掉,或者说归档到一些成本更低的数据库中,比如说我可以把它归拢到一个内存水库或者说 oasis 等系统中这样的话,这样的话,你是关系型数据库中存储的基本都是一些你需要查询的比较新的数据,然后一些很少之前的就可以在冷存储中执行的。但是归档的话,其实有一个怎么归档的一个问题,那在之前的话,其实大家也比较习惯于比如说直接通过一个的类似语句加一个 where 条件来删掉一些比较老的数据,但是问题就在于 delete 语句它其实是如果删的数据比较数据规模比较大的话,他 mexico 会认为他是一个需要一个全程扫描,然后他会锁住手术整个的家属,也有可能会产生大量的 bing log,因为你删数据的话,你是需要一个是事务性保证的,所以它会占用你大量的磁盘空间,那如果数量太大的话,你甚至会因为你的内存不够,导致删失败等等这样的话其实就是一个比较危险的操作。

业务特性:

数据实效性:

业务数据随时间增长很快,并且业务数据的热度随着时间推移会有明显的降低。

这时候,大部分的请求访问的其实都是较新的数据。如果数据一直存储在 PolarDB-X 中,会降低正常业务查询的效率。所以有些业务场景会定期删除或归档数据。

存储成本:

除了降低查询效率之外,如果数据一直存储在 PolarDB-X 中,也会占用存储空间。一般而言,为了支持高速存取,数据库的存储成本相对于 OSS 等冷存储是比较高的。

归档问题:

通过 delete 语句删除大规模数据,会造成锁表、产生大量 binlog、磁盘空洞等问题,是一个较危险的操作。大规模delete 后一般还需 Optimize 一下,同样可能会继续锁表,以及占用额外磁盘空间。

典型场景:订单、快递、电商、日志等

那即便你删除成功的,那其实你的那个比较占有的空间他还在,所以你其实并没有真正的释放出来相应的磁盘空间,这样的话你存储的成本还是在那里,然后一般来说大规模的 delete 语句之后还需要补一个操作,操作的话其实就是重建一下会把所有的数据作为一个搬运,然后中间可能还会拿一下 m 批加锁,所以那这个的成本也是比较大的。那所以这个其实是原先通过语句的一个删除的问题,当然你其实也可以在我要语句后面加一个语句之类的,但是这样其实也很麻烦,你说要去不断的循环的去算数据,那所以有了这些问题之后,我们其实就可以提出我们的想法,我们是不是可以把我们的表空间按照时间分区,然后按照时间分区之后,你每个分区的数据其实就是包含了不同时间范围的数据,但我们知道 Polar- dx 其实是一个分布式的数据库,那它本身就有分区表的这个功能,你可以看那个右下角这张图,这边 p1,P2P 3p4,意思是假设我们有一张 polar-bx 表,它已经被分成了四个分区,按照哈希做,按照ID来做一个哈士分区,那这张表的数据会均匀的分布在这四个分区中。但是但是每个分区中的数据其实是包含了所有时间范围的分区,那这时候我们就想着能不能在垂直方向上去把每个分区都在按照时间做一下拆分

需求分析

image.png

数据按照时间划分:

PolarDB-X 的分区表通常会将数据路由到多个分区(可以理解为水平拆分)

每个分区内数据的新旧程度不同,如果每个分区内的数据还可以再按照时间分区,会有助于管理数据的生命周期。(可以理解为垂直拆分)

低运维成本:

避免删除数据期间影响业务,尽量让业务无感知。提供一系列运维指令帮助管理和审计相关任务。

打通删除和归档:

支持被删除的数据归档到 OSS,并提供一定的查询能力。提升热数据查询效率,减少存储成本。

(下一次直播会进行演示)

然后可以看到这边有一个 state 的一个视力,其实这就是我们 ttl 想做的一件事情,在 dx 的分区表的基础上再叠加一层,按照时间维度的拆分这个裁缝是直接作用到物理表上,这样的话,我们如果要去删掉,比如说一个老的分区的话,其实我们只要对 p1,P2P 3p4 每一个分区都去做一个交互的 partition 的操作,就是把最老的那个分区那直接给job 掉,那我们其实就可以达到一个很快的删除的效果,然后因为它其实是他对于数据库的内部来说,它其实只涉及到一些原数据的操作,所以他并没有真正的发生一些磁盘,等你数据删了之后,他后台线程可以慢慢再把这部分数据给删掉。所以他这个给力的操作是一个比较轻量级的操作,然后这部分老的数据,其实我们有时候也不希望他直接被删掉,所以我们其实还有一个数据归档的功能会能够将你的数据归档到 oss 这样的存储中,并且提供了一定的存储能力,这就是就是刚刚我们我们说到的归档或者删除下一次直播的话会讲到这个 oss 功能,今天的话主要聚焦在这个 tl的功能上,那我们把刚刚那幅图拉近一下,仔细的看一下这一个这一个内部的实现假设嗯后来他除了支持分区表之外,它还支持一个全局二级索引,并且全局二级索引也是也是能够分布在不同的数据节点上的。

image.png

所以你全局2级缩影其实也可以看做一个分区表,只不过它的数据是他的数据的行数跟主表是完全一样的,只不过他可能包含的列数比较少,是主表的一个子集,那对于一个主表带一个三的常理来说,它其实就会是一个这样的结构,假设图标有四个分区,那直接有两个分区,那我们就一共有六个分区,然后ttl可以使用t 2表功能的话,你其实可以有几个参数,重要的参数你可以设定,第一个是每个分区的时间的力度是多少,最少是一天或者一个月,一年都行,然后其次就是数据过了多少个周期之后,它会自动的删除掉,也就是这个 Expire of the counter 的意思,这边这边是 expire of 等于六,意思就是过了六个,16个周期之后会删除掉,那这个 pre allocate count 意思是会提前多少个时间周期创建分区,那这边就是三个。那假设现在创建的时候是这样的一个场景,那过了一个时间的周期之后。我们可以看到下面这边其实创建出了第十个分区这样,然后第一个分区它其实已经过期了,他就会删掉或者归的老 os,那它其实本质上其实是一个类似于滑动窗口的一个结构。我们这边是左边需要指定一个过期的时间,时间的时间周期的数量以及提前分配的时间周期的数量,他跟谁相比过的六个周期之后需要删除,那其实就是有这个来定义的,它默认的时间是当前时间,当然如果你业务有需要的话,其实也可以设置成一个过去的时间或者未来的时间,这这边可以是一个表达式。刚刚讲到了为什么我们需要一个具体表的功能,那现在的话就直接带大家来演示一下这个 ttl 表的功能。

相关文章
|
6月前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【农作物谷物识别】系统实现~Python+人工智能+算法模型+图像识别
农作物谷物识别系统,技术栈如下: ● 前端:Vue3+Element plus ● 后端:Flask框架 ● 算法:卷积神经网络算法(resnet50)、TensorFlow 关键技术:深度学习、模型训练、图像识别、人工智能、Python、CNN卷积网络
334 1
基于深度学习的【农作物谷物识别】系统实现~Python+人工智能+算法模型+图像识别
|
7月前
|
JSON 人工智能 自然语言处理
[大模型实战 05] 大模型实战的杀手锏: 模型微调
本文通过Kaggle实操对比Base与Instruct模型,图解大模型预训练→指令微调→人类对齐三阶段演进,并厘清Prompt工程、RAG(注知识)与微调(塑性格)的技术边界与选型策略,助你科学决策模型优化路径。
|
安全 测试技术 API
后端开发中的API设计原则与最佳实践
本文将深入探讨在后端开发中API(应用程序编程接口)设计的基本原则和最佳实践。通过阐述如何构建高效、可扩展且安全的API,帮助开发者提升后端系统的性能和用户体验。不同于传统的摘要,本文无需包含背景介绍,直接进入主题,为读者提供实用的指导。
905 7
|
C语言
C语言 网络编程(九)并发的UDP服务端 以线程完成功能
这是一个基于UDP协议的客户端和服务端程序,其中服务端采用多线程并发处理客户端请求。客户端通过UDP向服务端发送登录请求,并根据登录结果与服务端的新子线程进行后续交互。服务端在主线程中接收客户端请求并创建新线程处理登录验证及后续通信,子线程创建新的套接字并与客户端进行数据交换。该程序展示了如何利用线程和UDP实现简单的并发服务器架构。
|
安全 Windows
EasyRecovery2023数据恢复软件特色功能介绍
想必大家对于下面这个窗口都非常熟悉,当复制的文件粘贴到一个存在同名文件的文件夹中就会出现该提示窗口,如果选择的是替换,那么新文件夹就会将文件夹中的同名文件覆盖掉。但其实很多时候,由于粗心等问题,会将一些重要文件给覆盖了,那么替换覆盖的文件怎么恢复呢?下面,我们一起往下看看吧!
366 0
|
缓存 运维 NoSQL
有货:六层混合云架构打造中国最潮生态圈
随着整体业务的高速发展、流量的爆发式增长,有货对其系统做了大面积的系统重构,首先数据中心从传统的单一IDC到“公共云+IDC”混合模式;应用系统也从原来的单体的全站应用演变到目前的以微服务为核心的架构模式;同时采取多级缓存、服务的降级等多维度、全方面地提升系统的可用性。
15030 0
|
Android开发 数据安全/隐私保护 定位技术
|
网络虚拟化 网络架构 数据安全/隐私保护
|
10天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。