编辑说明:本文收录了两位专家关于MySQL DBA的成长路线的建议,很具有指导意义,认真阅读,一定能从过来人身上获得教益。本文原发『高效运维』公众号,保留了交流中的口语风格。
编辑:萧田国(修订 & 点评)
主要讨论人员:
提问: 周彦伟@去哪儿网
回答: 赖铮@InnoDB 官方
嘉宾介绍
周彦伟
ACMUG 联合创始人,去哪儿网数据库总监。
十余年的MySQL 从业经验,中国地区最著名的MySQL 专家之一。赖铮
现任Oracle InnoDB 团队 Principle Software Developer。
从事数据库内核研发十余年,曾在达梦、Teradata担任高级工程师,主要负责数据库执行引擎和存储引擎的研发。
精彩问题
本文涉及的提问包括如下几个:
你推荐怎样的MySQL DBA 学习路线?
Oracle 官方怎么看MySQL发展的,MySQL 企业版会免费么?
请站在官方的角度评价MariaDB和PG。
关于你的工作,及全球分布式开发方式。
Q1:你推荐怎样的MySQL DBA 学习路线?
作为专职的MySQL源代码开发人员,你对MySQL DBA学习路线的推荐是什么?描述一下你的眼中的运维DBA。
以下为赖大师的回复。
其实,作为开发人员,DBA对于我们是另外一个行当。
打个可能不那么恰当的比方,就如同一辆车,我们造好一辆车,写好说明手册,而DBA则负责调教和维护这辆车,让它能发挥最高的性能,坐得最舒服。
在我的职业生涯最初几年也是做系统维护,算是初级的DBA吧,对于数据库的使用也仅限于写SQL查询,做备份等一些琐碎的工作。
然后,某一天,一位前辈告诉了我怎么建索引之后,我试了一下,一句巨慢的SQL建索引之后秒出。我这才知道,数据库这玩意还有那么多有意思的门道。
从此,也就开始和它结下了不解之缘,也开始了“我学习它,研究它,开发它”的道路。
从我个人的经历来讲,我觉得不管是学习MySQL,还是学习数据库可以分成三个阶段,概念了解阶段,实践探索阶段,玩耍琢磨阶段。
1. 概念了解阶段
在这个阶段,主要需要知道一些数据库系统的基本概念。
我们在本科阶段学习的数据库知识主要偏重于理论和怎么使用数据库,比如范式,怎么建ER模型,而对于数据库系统的内部原理很少涉及。
而真正要用好数据库,对于数据库系统的内部原理就需要有深刻的认识。
所以,我觉得需要先从数据库的一些原理和内部构造来开始学习。这里可以推荐两本经典的教科书,《数据库系统实现》和《事务处理》。
这两本书对于数据库系统的构造和事务模型有着很深刻的讲述。但如果大家不是真的想做数据库或者研究数据库系统的源码,就没有必要精读,对其中的一些基本概念有了解就行了。
主要的侧重点还是数据库系统的数据组织和事务模型。
2. 实践探索阶段
第二个阶段是实践探索阶段,结合自己的工作,有针对性的学习某个数据库的实践知识。比如,工作中用到MySQL,就专门针对MySQL进行学习。
这个阶段需要多动手,多实践。看一百遍书都不如实际操作一次。从系统的安装,初始化,建库,建表到建索引,全都操作一遍。MySQL的手册非常详细,很容易上手。
这个阶段应该可以掌握绝大部分MySQL的常用功能。
3. 玩耍琢磨阶段
第三阶段就到了可以自由发挥的阶段了,在实际工作中,大家可能碰到各式各样的问题。积累了足够的经验后,就可以想出最合适自己的办法来解决碰到的问题。
比如说,表太大了要分表怎么办,缓冲区怎么设置最合适,复制数据不同步怎么办等等。
以上,就是我对数据库学习的一些粗浅见解,抛砖引玉,彦伟兄和盖总多提意见。
我眼中的运维DBA
至于我眼中的DBA,我想萧总(是在说我么,呵呵,有些太不好意思了—编者注:)应该算杰出DBA的典型代表。
一个有追求的DBA,必须是充满激情和求知欲,对于新功能和新技术有着异于其他行当的敏感和渴望,会为了所辖系统的每一次进步而获得巨大的成就感,永远希望自己是站在牛A和牛C中间的那个。
Q2:Oracle 官方怎么看MySQL发展的,MySQL 企业版会免费么?
Oracle官方对MySQL 发展的路线,有没有可以透露的内部消息?MySQL企业版有没有转为免费?
另外,除了MySQL Cluster,MySQL一直没有很好的分布式的产品或者方案,不知道这方面有没有考虑?
以下为赖大师的精彩回复。
首先申明一下,我的立场不代表Oracle官方。
但对于MySQL的发展,我身为其中一员还是能深刻感受到Oracle持续推动MySQL发展的强烈意愿的。
就我们InnoDB组来说,收购后大部分的骨干成员都留了下来,比如:我的老板Sunny,芬兰大神Marko,牛人Jimmy等等。不仅如此,我们组还在持续扩充,我就是后加入的成员。
所以,可以看见,Oracle在MySQL上是一直在投入,这跟其他几个被收购的产品(比如:BDB)不同。
至于说发展路线,涉及到高层的决策,我无法妄言。
企业版转为免费我也没有听说,我觉得在可预见的未来,还没有这个打算。我想这也和Oracle一贯保守的作风吻合。
分布式产品我们自己内部也鼓噪了很久,但一直没有得到许可去做,我估计上层是担心跟自己产品线的冲突的缘故吧。
Q3:请站在官方的角度评价MariaDB和PG
MySQL的压力在哪里?请站在官方的角度评论一下MariaDB和PostgreSQL。
跟MySQL的其他版本对比,很明显的可以看出来MySQL官方版本的更新缓慢,比较保守,这种情况作为Oracle在职人员是怎么看的?MySQL的压力在哪里?请站在官方的角度评论一下MariaDB和PostgreSQL。
以下为赖大师的精彩回复。
是的,与其他分支比起来,官方版本是看起来相对保守,我想主要有这样几个原因:
跟MySQL管理团队一贯的做事风格有关。稳定是首要目标。如果一个新的功能和优化会带来整个系统的不稳定,做决策时会考虑得比较多。
相对于其他的开源软件,MySQL的代码贡献者还主要是内部员工,外部代码要进入主线版本需要繁琐的验证和确认流程。
政治因素。Oracle和MySQL虽然不是直接竞争对手,但多少会有政治因素牵涉其中。
不管怎么说,MySQL的发展遇到的问题一定是比其他数据库多,而且大,而MariaDB,PG作为相对独立的产品,少了很多桎楛。
至于怎么评价MariaDB和PG,官方的角度来说是一贯的:
都不如我,老子天下第一。
但是,就我个人的看法而言,竞争对手给予的压力是显而易见的,Monty挥舞着自由的旗帜,聚集了一大票MariaDB的粉丝,PG的势头也很猛。
MySQL做的不仅是要跟上对手的节奏,比如加入memcached plugin、加入对GIS的支持等等;还要苦练内功,比如对InnoDB的性能提升,和提供更完善的系统管理工具等等。
至于三个产品的对比,我还是认为各有千秋,都有自己的长处。
MySQL的长处在于庞大的客户群体带来的整个生态链,市场上可能有一万个懂MySQL的DBA,但却只有一百个懂PG或MariaDB(这里特指MariaDB中与MySQL不同的部分)的。
另外,我有一个观点,其实,一个数据库产品,大家经常使用的就是那最常用的80%功能,其他的功能,只有特别的需求才需要,比如说GIS的功能。
所以,把那最常用的80%功能做得好,就取得了极大的优势。而这,也就是MySQL的优势。
大家可以看到InnoDB在5.5到5.7,大幅度提升了性能,而这些,需要对代码的全面和深刻的理解才能做到。
Q4:关于你的工作,及全球分布式开发方式
聊聊你的工作情况,工作内容和跟同事间的合作方式,看看MySQL的这种分布式全球的开发人员的工作方式能不能为其他公司借鉴?
以下为赖大师的精彩回复。
接下来说说我们的工作情况。我所在的是MySQL的InnoDB组。小组现在一共有将近20个人,成员遍布世界各地。
所以,是一个非常国际化的团队。主要成员来自欧美,中国和印度。我们现在的老大是Sunny,由他管理着整个团队的任务分发和进度。
由于很多人都是在家工作,所以,大家平时都是用IM工具来进行联络,但因为小组成员都是资深的数据库开发人员,所以相对来说大家虽然相对自由,却都非常敬业。
我们每年都有一次聚会,大家会一起到一个办公室进行面对面的交流,讨论工作中的问题和设计方案等等。
我们的代码开发流程相信跟其他公司没有太大的区别,设计,原型实现,代码review,QA,checkin,比较老式的流程。
重点是代码review,由于review都是最资深的几个人,所以,会提前发现很多隐藏的问题。
总之,我觉得MySQL的开发还是属于那种传统式的开发模式,完全没有采用现今的一些新型的开发模式,比如敏捷开发等。
但,员工的专业保证了整个产品的质量。
加入"云和恩墨大讲堂"微信群,参与讨论学习
搜索 盖国强(Eygle)微信号:eyygle,或者扫描下面二维码,备注:云和恩墨大讲堂,即可入群。每周与千人共享免费技术分享,与讲师在线讨论。