• 186 8888 8889
  • admin@baidu.com
  • 广东省广州市番禺园科技大厦

公司新闻

DBA神级操作:如何将工作“合理分摊”给开发?

我没有时间顾全一切


我是一名非常忙的 DBA。百家乐旗舰厅开发人员常常在不经过我 Review 代码的条件下,直接提交到生产环境。这导致我一次又一次地陷入被动的境地,在美好的周末里,开发人员可能都在海滩上喝着美酒抽着雪茄,而我还在不断解决性能问题。这种境地是否似曾相识?也许开发人员可能并没有在海滩上享受生活,但也不会差得太大。


你很忙,你需要保证备份是可恢复的,服务器是被锁定的,提供新的实例,不能停止打补丁。这一切的维护计划不会自动执行。


开发人员的工作也是如此,他们需要不断地更新系统,但是相较于 DBA 的修改,比例有所不同。通常来讲,开发人员管理的代码远远多于 DBA 管理的。


DBA 没有足够的时间审查所有的内容,修改的内容直接发布到生产环境,造成问题时 DBA 就不得不需查看当时的修改内容。如果 DBA 有时间的话,就应该在评审期进行检查。


这是一场噩梦,又会发生什么?


想象一下,如果有一群人可以帮你审查代码,如果每一个开发人员都有一个你信任的“守卫”来做代码审查?如果随着时间的推移你可以帮助程序员能够自己有能力检查 SQL 代码——如果这样可以减少您花费 1%、10%、50%、100% 的额外时间,又会怎样呢?你是否可以想象得到,躺在沙滩上的人会不会变成你自己呢?


开发人员不精通 SQL怎么办?


我们先看看 DBA 在代码评审时应该做哪些事情:


确保格式正确,符合全部的标准;

是否有潜在的 SQL 注入的风险;

考虑修改的风险,比如说在一个 10 亿数据的表上面,修改聚集索引所花费的时间,实时性要求比较高的系统是否能接受这种时间上的消耗;

考虑一下对于性能的影响 —— 是否会导致 tempdb 溢出,是否会产生死锁,执行计划是否变糟;

代码是否符合开发人员的预期,merge 语句中的 update 语句是否正确;

想要开发人员足够了解 SQL,并能够独立自查自己的代码,减少线上问题,有许多需要注意的东西。


以上列出的只是其中一部分问题。通常来讲,快速看一遍代码很容易做到,但是没什么太大的作用。花费时间去思考修改的内容往往能够找出问题,但是也比较耗时,而且 DBA 往往没有那么多时间。所以这种情况,我常常称是一种恶性循环。


下面我们还是来分析一下 DBA 做的每一件事,看看我们能做些什么。


确保格式正确,符合全部的标准


自动化的方式可以直接节省全部的时间。