一个复杂的数据需求的创新优化(r12笔记第96天))
公众号:杨建荣的学习笔记 · 作者:杨建荣 · 发布:2017-06-16 23:28:31 · 原文链接
今天处理了一个蛮有意思的案例,正如我给开发同学所说的那样,方案有很多,但是我们需要明确需求之后,找到一个最合适的需求。
业务同学反馈,数据库中有一个表数据量很大,因为要做一期活动,需要近期的数据,以前的旧数据可以考虑清理。清理多少旧数据呢,差不多是99%的量,数据量有多大呢,差不多两个亿。所以这个需求听起来蛮简单,但是业务同学明确希望能够保持业务的可持续性,这样一来就对实现方案有了一些选择。
这个看起来简单的需求,我的总结如下:

总结下来,要做4件事情:
-
优化查询,目前是基于时间范围来查询,经过评估需要给这个表添加索引
-
清理数据,表里有两亿数据,但是要清理绝大部分数据。
-
保证业务的可持续性,每10分钟会做一次统计分析,数据会实时录入系统
-
把表修改为分区表,把旧数据放入一个分区,新数据放入另一个分区,变更之后删除就分区即可。
如此一来,在线重定义这个方案就是我评估之后的首选方案。
但是我发现,尽管我信息满满,但是在实践的时候是困难重重,过程还是略有坎坷,碰到了很多细小的问题,碰到了低版本的bug,能够峰会陆欢,化险为夷,看起来要做得事情还真不少。
在线重定义碰到的坑
在线重定义的过程步骤其实不难,但是比较纠结的是在这个过程中碰到了很多的问题,有些竟然是低版本的bug,这个时候我是深深怀念11g,平时感觉不到明显的好,但是这种问题面前就会感觉11g更加亲切。

除了时间和空间的代价较大之外,碰到了一些bug会让人实在有些无奈。
