开发者学堂课程【PolarDB-X 开源分布式数据库进阶课程 :PolarDB-X 数据 TTL 过期删除(三)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1202/detail/18333
PolarDB-X 数据 TTL 过期删除
三、ttl 原理介绍
简单的说一下这一个表,这个表达式的话,它其实一个方言,感兴趣的话可以看一下这个表,你只要给他一个表达式,他会自动的来当你去计算他的含义,然后还是处于一些这样的可读的一些意思,刚刚都是 ttl 表的功能,这边如果大家对我们内核如何实现这么一些 dll 感兴趣的话,其实有个很方便的小技巧啊,我们在任何执行地调的时候都可以在他的前面加上一个 trace 指令,再进行一个收费式指令,它就可以显示出一个可视化的图,就像那右边展示的一样,这样的话就可以知道任何地点,他进行了哪些操作,他是以一个系列的 task 组成的,然后这些 task 跟我们开源代码中的 JAVA 源文件其实是对应的,然后也可以去通过这个方式来去我们的开源代码中搜索,相应的我去看看死机的代码,然后主要的代码的话,一些关键的类在 PPT 中展示,有兴趣的话可以按照这些信息来,是 polarDB-X 条语法它对应在我们每个物理表上创建出来的表,就会是这个样子。然后这边右边下面红框的范围其实就是因为我们左边定义了,所以他不会提前六个周期创建新的分区,然后红框上面的话是一些已有的分区,从 subway state 开始 Pay to local 跟 local partition 的内部逻辑其实就是这个滑动窗口的时间判断。那他做的时间判断之后,会把它翻译成针对我们数据节点上的一些对物理表的操作,对物理表的话其实是一个 reorganize 操作,比如说你要新建分区,其实就是把这个 pp max 这一个分区 organize 成多个的,但是力度的分区,那老的分区的话,其实就在会翻译成一个叫partition 的一个操作。
四、TTL 表的性能
最后再说一下这条表的性能,可能有些同学会顾虑到我们原先的物理表它是一个单表,但是用我的 ttl 表之后,我们所有的物理了都是变成一个分区表的,那这样会不会对我们的性能有所损害呢。其实经过测试的话,这是一个测试结果,可以发现对于程序数量越多,其实这个会下降。
最后再说一下这条表的性能,可能有些同学会顾虑到他原先的物理表它是一个单表,但是用的 ttl 表之后,我们所有的物理表都是变成一个分区表的,那这样会不会对我们的性能有所损害,其实,经过测试的话,这是一个测试结果,可以发现对于对于一个天天表相比于相同的表结构,但是不做贴条的划分,他的2t略有损伤,q S6有下降,但是是一个差距很小的一个情况,当然是97比100之类的,分区物理分区数量的越多,就是这个会下降的越多,但是整体的话,特别是检查场景是不会有太大差别的,那如果是全表扫描的话,刚刚说的是检查现在现在如果是全表扫描的话,他的q PS是会有一部分的下降的大平均的话大概会下降20%左右,但是如果你是一个范围查询,不是一个全表扫描的话,那我们知道他物理表其实也是有分区裁减的,他在特定场景上,他的性能其实有可能是反而会有所上升的,那最后的结论就是他的不管是按照物理根据划分,还是不用提前要表他物理表是一个单表,他的性能其实是不会有太多的差别的。
结论
当 DN 并未成为资源瓶颈时,Local Partition 表和普通表的性能差距很小。
不带 Local Partition 的拆分键时,性能损失约20%,最大吞吐量损失约50%(和分区成正比,数据量成及比)。
DN 资源够时,对客户端的变化是:RT 小幅增加。
带 Local Partition 的拆分键时,性能和吞吐量无明显差距,反而会有小幅提升。因为可以用时利用 INDEX 和PARTITION2 个线度做数据裁剪。
Local Partition 表,可利用拆分键时,AP 查询有优势。