一个复杂的数据需求的创新优化(r12笔记第96天))

作者: admin 分类: 公众号存档            3 次浏览 发布时间: 2017-06-16 23:28

公众号:杨建荣的学习笔记 · 作者:杨建荣 · 发布:2017-06-16 23:28:31 · 原文链接

   今天处理了一个蛮有意思的案例,正如我给开发同学所说的那样,方案有很多,但是我们需要明确需求之后,找到一个最合适的需求。

   业务同学反馈,数据库中有一个表数据量很大,因为要做一期活动,需要近期的数据,以前的旧数据可以考虑清理。清理多少旧数据呢,差不多是99%的量,数据量有多大呢,差不多两个亿。所以这个需求听起来蛮简单,但是业务同学明确希望能够保持业务的可持续性,这样一来就对实现方案有了一些选择。

   这个看起来简单的需求,我的总结如下:

总结下来,要做4件事情:

  1. 优化查询,目前是基于时间范围来查询,经过评估需要给这个表添加索引

  2. 清理数据,表里有两亿数据,但是要清理绝大部分数据。

  3. 保证业务的可持续性,每10分钟会做一次统计分析,数据会实时录入系统

  4. 把表修改为分区表,把旧数据放入一个分区,新数据放入另一个分区,变更之后删除就分区即可。

如此一来,在线重定义这个方案就是我评估之后的首选方案。

但是我发现,尽管我信息满满,但是在实践的时候是困难重重,过程还是略有坎坷,碰到了很多细小的问题,碰到了低版本的bug,能够峰会陆欢,化险为夷,看起来要做得事情还真不少。

在线重定义碰到的坑

在线重定义的过程步骤其实不难,但是比较纠结的是在这个过程中碰到了很多的问题,有些竟然是低版本的bug,这个时候我是深深怀念11g,平时感觉不到明显的好,但是这种问题面前就会感觉11g更加亲切。

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

admin

杨建荣,《Oracle DBA工作笔记》《MySQL DBA工作笔记》作者,dbaplus社群发起人之一,腾讯云TVP,现任竞技世界系统部经理,拥有十多年数据库开发和运维经验,目前专注于开源技术、运维自动化和性能调优

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注