数据库优化项目的流程之实施 zt

http://blog.oraclefans.cn/baishan1/entry/dba%E6%97%A5%E8%AE%B0_%E7%AC%AC%E4%B8%80%E9%83%A8_%E8%A1%A5%E5%85%85_3[@more@]

0.1.1. 优化项目的流程之实施

优 化方案的实施实际上最重要的不是技术,而是实施的规范性。优化的实施方案已经完成,所有的实施脚本都已经完成编写,实施的时候只是按照实施方案规定的步 骤,一个一个步骤的执行就行了。不过对于较为大型的优化项目,最好设置一个专职的实施指令长、一个操作人员和一个审核人员。

指令长的职责是发出实施指令,操作人员负责实施操作,审核人员对每个操作的步骤进行审核,并且在命令实施完毕后校验实施结果。这种分工下每个人的职责十分清晰,不容易出现较大的问题。在我们第一次优化实施的时候,老于就担任了指令长的角色,老肖负责操作,而老白负责审核。

实 施过程中如果碰到问题,需要首先判断该问题是否能够被解决,如果通过判断这个问题很难解决,那么就马上应该考虑回退。如果这个问题的回退将导致整个优化的 回退,那么就需要花更大的精力去争取解决这个问题,但是必须为这个问题的解决指定时间限制,在这种情况下,可能需要对实施方案做调整,调整实施步骤的各个 时间点以及名且该问题的最终回退点。实施方案调整后必须严格按照调整后的实施方案,如果到了最终回退点还没有解决这个问题,那么就必须毫不犹豫的进行回 退。在一次失败的实施和一次失败的优化这两种结果的选择上,明智的人都会选择前者。优化操作回退后,我们还有时间分析问题,找出问题的原因,然后进行下一 次实施,而如果由于优化实施的失败影响了第二天的业务,那么你失去的可能是这个客户。

由 于生产环境十分复杂,因此在做大型的优化实施的时候要十分谨慎。因为大型优化涉及面十分广,有时候可能会超出我们想象的范围。稍有不慎,就会对优化效果产 生极为不利的影响。比如我们的优化操作中经常会有添加索引、重建索引、整理表碎片等操作,对于这些操作,我们往往会忽略由于对这些表和索引的操作,可能会 导致以前某个SQL的执行计划发生改变。如果这个SQL和某个关键业务相关,那样的话就可能产生十分严重的性能问题。

这 种大型的优化最好能够在测试环境中进行严格的测试,不过实际上,在绝大多数项目中,我们无法做到这一点,完全的仿真测试所需要的测试环境、测试数据、测试 模拟器方面的要求十分高,在老白做过的所有优化项目中,还没有一个客户能够提供完整的测试环境。基于上述原因,在绝大多数情况下,我们都无法做到进行完整 的测试,因此在优化实施的时候我们需要做更多的工作。

为 了避免由于局部调整带来的负面影响,我们在实施前,应该采集足够的历史数据,这些历史数据包括STATSPACK/AWR报告,关键业务模块的SQL的执 行计划及开销等。在优化实施完毕后,虽然大家都很累,但是有一件事情必须做完后再去休息,这就是等待30-60分钟,然后采集相关的数据,和历史数据进行 比对,检查关键业务模块相关的SQL的开销是否有明显的增加,对于执行开销增加的异常现象,都需要进行严格的检查。老白采用这个方法就成功的避免了多次事 故。有一次我们对系统进行优化,调整了部分索引,并且整理了部分表,重建了部分索引。做完后,我们对涉及到的所有表和索引做了分析。所有操作都完成后,我 们采集了STATSPACK报告,通过报告我们发现,在TOP SQL中有2、3个SQL是以前我们没有见过的,通过调阅这几个SQL之前的执行计划,发 现这几个SQL的执行计划发生了改变,经检查,发现有几张小表上面没有分析数据,而这些小表这次优化操作并未涉及。重新分析了这几张小表后,系统恢复正 常,这几个SQL的执行成本恢复了正常。

对于有些系统,我们可能无法在优化实施后就马上发现问题,那么我们必须在客户上班前就回到现场,第一时间采集优化的信息,并且和历史数据比对,如果发现异常情况,马上进行相应的处理,以避免优化中的负面影响带来的灾难性的后果。

一般来说无论实施后的效果如何,实施后的几天,优化人员需要对系统进行观察和分析,检查是否存在一些小的需要调整的地方。如果发现后,及时作出优化建议,并且进行调整。这种调整有时候能够对整个优化效果起到十分关键的作用,大家也不能忽视。

虽 然最好的做法当然是在优化时对优化的每个步骤进行严格的分析,从而避免这种情况的发生,但是这种完全避免仅仅在理论上存在,每个优化实施者的分析能力不 同,实际生产环境也十分复杂,测试环境的缺失以及测试手段的不足,都可能给优化实施带来不确定性,所以在无法完全避免的情况下,如何将负面影响限制在最低 水平就十分关键了。

在这一节里实际上有三个问题需要关注,第一个是在实施过程中如何避免不必要的错误,完全依赖于实施方案进行操作,通过指令长、操作员、复核人员的分工,避免错误的操作。

第二个问题是碰到异常如何处理,如果我们的实施方案水平较高,那么碰到各种情况可以按照预案进行,但是我们无法对任何情况都提供预案,在碰到没有预料到的问题的情况下如何进行处理,如何决定最终回退时间也是决定实施成败的关键因素。

第 三个问题是实施后如何判断是否存在较为严重的问题,并且采取相应的措施。在绝大多数优化实施项目中,做完调整后大家都很累,都希望马上回去休息一下,不过 这个时候如果多留下一段时间,可能可以避免一些不必要的问题。这个问题也涉及到优化实施方案中的时间安排,在设计方案的时候也要充分考虑到这方面的问题, 尽可能多预留一些时间。另外对于实施人员,最好能够在优化实施的前几天充分休息,以便于有足够的体力来应付从晚上到第二天上午的连续十几个小时的工作。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/82387/viewspace-1027019/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/82387/viewspace-1027019/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值