DBA必备能力总结

10月 14th, 2009 | Posted by | Filed under 数据库

本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://www.penglixun.com/tech/database/dba_essential_ability_summary.html

经过了阿里系的招聘,有幸跟七公、NinGoo、Fenng、Jacky、Sky.Jian等大牛直接交流,在他们的点拨之下,我发现了自己致命的问题,也总结了一些想成为优秀DBA的必备技能,不仅技术,还有综合能力,以下都来自上述大牛的点拨,就不一一说明版权了。

 

专业技术方面:

1.熟悉至少一种数据库的应用。
例如Oracle或者MySQL,不一定都要很熟练,但是至少精通一种的使用。
包括执行计划、任务调度、参数调整、安装部署、常见错误修复、开发接口等等。
2.熟悉数据库通用的算法。
例如JOIN的三种算法,包括适用场景和实现细节;Group By/Order By的多种实现方法等。
3.熟悉至少一种数据库的主要算法。
例如MySQL中只有Nested Loop Join一种算法,Group By通过Sort实现,Sort、Join如何利用它们的Buffer;而Oracle一般将JOIN优化为Hash Join,SGA/PGA的结构及各进程的处理方式和流程等等。
4.熟悉影响数据库性能的参数。
例如MySQL中的my.ini中各种参数的含义、影响及调优方法,Oracle中SGA/PGA如何分配调整及调优等等。
5.熟悉至少一种数据库的SQL调优。
因为数据库采用的算法并不一定相同,所以SQL调优的方式也不相同。
6.了解各种数据库实现的不同之处。
至少应该知道各种数据库之间的实现是有差异的,调优技巧不一定可以通用。
7.熟悉数据库设计范式。
范式不是万能的,但不懂是不行的。虽然生产中不可能完全采用范式设计,但是要知道不符合哪种范式会带来什么问题,这样才能在制造数据冗余的同时保证数据的一致性。
8.熟悉数据库设计基本原则。
为了提高效能,数据库设计中有一些常用的优化原则,需要了解其利弊,在设计中考虑正反两方面的影响,权衡利弊,设计优化的数据库模式。
9.熟悉数据库基本原理。
包括关系代数、关系演算、Alpha语言等等,SQL是这些基础理论的产物,了解代数层的优化,才可能在SQL优化中玩出花样,获得令人惊奇的效果。

 


周边技术方面:

1.熟悉Linux系统的管理。
我想应该不会有人把数据库服务器跑在Win下吧,对于一个计算机人员,熟悉Linux应该都是必备的,应该有抛弃Win后用Linux做大部分事情的能力(打游戏不算)。
2.了解Unix系统的管理。
Solaris/FreeBSD/AIX等Unix系列的系统也占有不小的市场,尤其是Solaris已经变成Oracle的产品之后,更有可能得到重视。Linux/Unix同宗,熟悉Linux了解起来不麻烦,至少要了解一点,能安装能配置起来。
3.了解网络模型和配置。
DBA完全不懂网络,基本上不用混了,分布式、集群没有网络是跑不起来的。
4.了解硬件体系结构。
数据库的问题并不一定是软件问题,也可能是硬件和网络的问题,了解硬件的体系结构,不仅可能帮助排错,也能正确的估算数据库的承受能力和硬件需求。
5.熟悉至少一种Linux脚本语言。
包括Perl/Shell/Python等,运维过程中少不了一些重复的操作,这些操作如果有脚本的帮助,将大大提高我们的工作效率,把更多的时间空出来做更有意义的事情。

 

综合能力方面:

1.团队协作能力。
Jacky点出了我最大的毛病,缺乏协作能力。工作中不可能一个人能单挑所有问题,总是需要合作的,跟团队的每个人处好关系,能完成自己的任务,并且能协同整个团队去解决问题,才能发挥自己的效能和整个团队的效能。每个人都很牛的团队不一定能比得过一个协同非常好的团队。
2.正确的分析能力。
遇到问题或者拿到一个新的技术,如何去分析其问题所在或分析其原理,需要正确方法。像NinGoo所说,SQL调优不能只看时间,就像算法中时间效率有常数一样,当N很小的时候,常数的影响很大,当N趋近于无穷的时候,算法的数量级就体现出来了,数据库也是一样,分析执行计划才能得到正确的调优结果,时间并不可靠。还有Sky.Jian说的,两台机器组MySQL Cluster发现数据结点一致,就以为MySQL会在每个数据结点存数据,其实只在两个节点存,再多一个节点就可以发现结论不对,但往往会被忽视,草率的做结论。
要能在排除其他因素干扰的情况下,分析问题,这是一种能力,我正忽视了这些因素会干扰我的判断,得出了很多错误的结论。
3.严谨负责的态度。
网上很多博文或者有些书中的结论,可能是翻译错误可能是作者疏漏,要抱着怀疑的态度去看书和博文,所述一定要经过自己证实、分析才能下结论,不可以光看就认为是正确的。跟NinGoo、七公、Sky.Jian的聊天中就发现自己看的很多博文是错误的或不全面的,因为没严谨的态度用正确的方法去分析,结果就看表面现象以为是正确的,幸亏被大牛们指出,否则可能很久都不能更正。

 

其他:

最重要的一条,热爱自己的职业!
没有热爱不会去付出,没有付出不回去珍惜,不珍惜岂能做好自己的事?!

标签: ,
  1. PengLiXun
    10月 14th, 200900:36

    测试WP Thread Comment。

    [回复]

  2. P.Linux
    10月 14th, 200900:37

    @PengLiXun
    测试WP Thread Comment。

    [回复]

  3. P.Linux
    10月 14th, 200900:42

    继续测试

    [回复]

    PengLiXun 回复:

    @P.Linux, 测试回复。

    [回复]