vlambda博客
学习文章列表

专访李春:十载从业路,谈谈和MySQL的那些年

2016年11月25日,沃趣科技“智慧应用 数据先行”2016产品发布会暨新三板挂牌庆祝会在杭州华美达酒店隆重举行,近百位知名企业专家、合作伙伴及媒体人共同出席本次会议,分享数据库相关领域的创新成果和成功经验,一同探讨数据库云化的摸索探寻之路。


借此契机,CSDN记者有幸邀请到沃趣科技联合创始人、高级数据库专家李春,围绕一些大家关心的话题进行采访。纵观MySQL的前世今生,漫谈MySQL十年长路,剖析时代节点下的MySQL分支抉择。



以下为正文:


由浅入深的MySQL学习历程


从与数据库的“意外”初遇,到结缘MySQL,我选择MySQL的最大原因,在于它适用于很多不同的场景,以及其嵌入式存储引擎可以满足各种需求,没什么局限性。未来,MySQL和关系型数据库要走的路都还很长,而我在这个领域还有很大的学习空间。


CSDN:首先请您先介绍一下自己,以及您的从业经历和感兴趣的技术等。


李春:我2007年从浙大毕业,加入了红杉树信息技术有限公司,在平台部从事C/C++开发,主要是基于MySQL来做周边产品,比如高可用、数据同步等。我当时所在的公司和团队相当于一个国外公司webEx在国内的重新孵化,但是带我的师傅Gary在美国做数据库开发已经有十数年了,技术和经验非常丰富,即使放在今天来看,很多想法和理念也是比较领先的。但是一直从事数据库高可用和同步对我而言的最大问题就是对数据库是怎么跑的、如何使用、为什么要做高可用和复制同步功能等一般DBA都很容易理解的事情不太清楚,也就是说,模模糊糊地知道要怎么做,但是对为什么要这么做无法深入理解。2009年左右,我进入阿里巴巴,我意识到如果一直这样做下去,将无法找到自己的方向,因此在进入公司的第二年,我便开始转型做DBA。开始学习真正站在用户和开发者的角度去理解,数据库到底是什么,应该解决用户的什么问题。非常幸运,阿里的DBA部门是全世界最顶尖的殿堂之一,前有鲁道夫、大师、Grassbell、大辉、HelloDBA等一众老一辈的大牛领路,后有朝阳、P叔、登博、印风、胜通等大神一起成长,实在是与有荣焉。


关于我自己,从业十余年,基本上都是围绕着MySQL这个数据库,虽然积累了这么久的经验,但是我觉得MySQL,或者说关系型数据库这一块仍然有非常多的东西需要去学习。目前看来,即使对MySQL非常熟悉,就比如我们在阿里有很多同事其实已经在从事MySQL源码级别的bug修复,甚至为MySQL补充功能特性。但即使是他们现在也还在不断学习。因为关系型数据库是一个非常深且强的领域。前段时间有篇文章非常火,说的是两个DBA可以支撑起数据库的所有事情,但如果切换到NoSQL,或现在很流行的一些分布式处理的领域,可能需要上百个应用人员和上百台服务器才能解决这些问题,孰重孰轻大家可以自行评估。有人可能会觉得被关系型数据库绑架了,但其实从某种程度来说,长久以来,我们使用关系型数据库的这套理论,不是没落了,而是放大了,放大到开发人员也可以利用它的理论来解决业务问题。Oracle无疑是当前这个宇宙中“最强大的数据库”,很多对传统关系型数据库理论的改进,特别是执行计划优化器方面是MySQL需要持续学习的,MySQL的路还很长,关系型数据库的路也还很长,我在这个领域需要继续学习的路也很长。


CSDN:在计算机众多分支中,为什么会选择做数据库?能否和大家分享下您从事数据库的历程?


李春:我从事数据库这个领域“纯属意外”。在读研的时候,我的导师陈根才院长和高云君博士恰巧从事的就是时空数据库的研究。时空数据库感觉很高大上,其实说穿了也很简单,并且在现在也是非常火的。比如滴滴打车就可以使用到这一技术。假设你在地铁上,现在要从“西湖文化广场”站打车;司机要从另外一个方向赶来,它的时间和空间都是一个变化的过程,如果仅计算位置,就只是空间数据库的问题,相对比较简单。但如果加上时间因素呢?这还是一个平面的过程,但是当时我们会研究得更深,在三维空间中移动,再加上时间就相当于四维因素相结合后,来计算两个物体运动过程中,到底在哪一个时间点的距离是最短的。


相对而言,我可能是做一行爱一行的人,而不是爱一行做一行的。当时做了这一块研究之后,逐渐对此产生了兴趣,在VLDB、SIGMOD等上面发一些论文也让我们成就感爆棚,一步步走来,也就逐渐确立了数据库这个学习方向,并且乐在其中。


但我是一个实用主义者,做研究相对离实际生活场景比较远,正好红杉树有一个做开源数据库的工作岗位,(2007年国内做开源数据库的并没有几家),而且带我的是有十多年数据库相关经验的师傅,所以就选错行嫁错郎,Just Do IT了。


至于为什么选择MySQL这个开源数据库,这就要比较一下其他商业或者国产数据库了。当时其实确实有几个可供选择:一个是Oracle,当时DB2因为小型机、封闭式等问题优势渐衰,所以Oracle成为商业数据库中最强的一员,而开源数据库则有Postgres,还有MySQL。提到国产数据库大家首先想到的是达梦、南大通用的GBase,其实当时浙大也有专门自研的OSCAR数据库(登博就是做OSCAR数据库的)。其实从当时大多数人的选择来说,可能选择Oracle会更好,因为Oracle当时非常火,当然,主要是“薪资极高”:)。但是我当时还是选择了MySQL,一是觉得它比较年轻,发展势头非常猛,用户也越来越多。另外2007年正是互联网刚刚兴起,日趋蓬勃的时候,我觉得开源数据库会更有优势。而其他的Postgres开源数据库,或者达梦等国产数据库这一块,用户量和成熟度都还不太够。


但我选择MySQL的最大原因,在于它适用于很多不同的场景,其嵌入式存储引擎可以满足各种需求,没什么局限性。与之相比,Postgres更局限于专业领域,“上船”要求比较高,而MySQL的目标是做最流行的数据库,上MySQL这条船比较容易。


直面选择节点,MySQL三大流行分支一览


MySQL目前三大最火的分支仍然是Oracle控制的、MariaDB控制的,以及Percona控制的,三者各有特色。其中,Oracle把控了原生MySQL社区版的发展,Percona紧跟MySQL的功能特性,并做了一些运维的改进和工具,MariaDB更加开放,功能特性也更强一些。


CSDN:您比较侧重的还是MySQL,MySQL开发版有很多,在您看来存在一些什么样的问题?


李春:MySQL目前最火的分支还是以下三个:Oracle控制的、MariaDB控制的,以及Percona控制的,这三者各有特点。


Oracle的MySQL大家都比较了解,就不多说了。


起初MySQL之父Monty在1979年写下MySQL的第一行代码,后来逐渐创建起MySQL公司,后将其以10亿美金卖给Sun,结果Sun又把Microsystems和MySQL转手卖给Oracle,Monty愤而出走,创立MariaDB分支。从某种程度来说,可能MariaDB才是一脉相承过来的MySQL。关于MySQL和MariaDB的由来也有一个小故事,MySQL的My并不是“My我的”意思,My其实是Monty的大女儿,Maria是Monty的小女儿,Monty还有一个儿子Max,所以对应的也有一个MaxDB。国外的好像都有这个传统。13年Monty来中国的时候,我们还跟Maria一起合照了,是一个很可爱的芬兰小姑娘。



叉得有点远了,我们继续说一下MariaDB和MySQL的区别。Monty无疑对MySQL是最熟悉的,所以MariaDB这个分支在功能性方面都表现得很优秀,也比Oracle MySQL走得更快一些,早在5.5时MariaDB就已经有了目前MySQL 8.0鼓吹的 Hash Join功能,在MySQL 5.7上的多源复制功能也早在2012年就提供出来了。而且它是一个“开放”的分支,Monty为了避免它闭源特别成立了一个基金会,把MariaDB放在基金会里,基金会无法进行商业活动,也就不会步MySQL的后尘。当然也有对应的 MariaDB的公司,来提供内部QA稳定性测试、商业套件、订阅服务、培训、甚至定制化开发服务等,所以即使MariaDB这个公司被收购了,也不会影响到MariaDB本身的发展。目前MariaDB在Gartner统计中是发展最快的开源数据库。


再看Percona,Percona是原MySQL运维部总监Peter和Vadim在2006年离开后创建的,因其本身是运维出身,所以他做的这个分支基本上也是为运维人员服务的。比如说它的XtraBackup和pt-Toolkits,这些DBA常用工具都是出自他的公司。在一个公司里面,运维和开发其实是两个比较冲突的部门;运维更保守,他要的是不要有Bug,监控、备份都需要配置起来方便,需要有问题时及时处理。而开发人员想的则是:这个功能MySQL实现不了,需要新增功能,要提交,要快速迭代、快速开发,举个例子:人类都有像鸟儿一样在天空翱翔的理想,于是开发人员生产了飞机,而运维人员担心掉下来生产了降落伞。Percona公司更偏向于运维工具;MariaDB更偏向于功能的完善;Oracle MySQL它介于两者之间。


但现在因为Oracle收购了MySQL,花了70多亿美金,自然想要控制MySQL,因此Oracle做的第一件事就是不再开发MySQL的Test Case,Test Case不需要遵循 GPL协议,所以Oracle成功了。但是,这个动作对开源社区和MySQL的开放性带来的损害是巨大的,阿里巴巴、Google、亚马逊等都有自己的特殊功能,对MySQL进行了大量源码的改造,用户遇到的问题提交给Oracle,Oracle写成Test Case,但是不开放出来,各大公司自己改的源码会因此无法得到验证,也就相对无法保证稳定和可靠,最后只有Oracle能够把控这个MySQL分支。在8.0的时候,Oracle进一步绑定了InnoDB,社区的控制力更弱。


总体来说,Oracle把控了原生MySQL社区版的发展,Percona紧跟MySQL的功能特性,并做了一些运维的改进和工具,MariaDB更加开放,功能特性也更强一些。


CSDN:是否能请您谈一谈对MySQL目前乃至未来发展的观点?以及对MySQL 8.0,MariaDB 10.2的发展的看法。


李春:这个问题非常好,目前正是一个MySQL选择的节点,也就是说,对于到底采用MySQL的哪一个分支版本,国内的企业需要做出自己的抉择了。其实国外相关行业已经做过一轮选择了。在Oracle收购MySQL之后,Google、Facebook、Twitter,以及RedHat、SUSE等Linux发行版选择直接切到MariaDB。这有基于MariaDB承诺永远不会闭源的原因,也有基于MariaDB功能丰富的原因,或者基于MariaDB插件丰富的原因,当然也有一些公司选择了继续保持使用MySQL或者Percona。但由于他们彼此之间能够相互兼容,国内并没有进行大规模的迁移。


但是现在MySQL 8.0来了,Oracle的把控越来越强,后续MariaDB和MySQL将出现越来越大的不同(Percona基本会坚定地跟着MySQL版本一起发布),国内企业是使用开放性更强的MariaDB,还是使用相关功能,比如高可用、强一致性基本就在MySQL内部完成的Oracle发行版。


就我们现在看到的现象来说,互联网公司,会更愿意走MariaDB这条线,因为互联网公司不希望被Oracle绑架,还是希望也从社区获得必要的功能和补丁,而且也希望发出自己的声音,同时需求和功能能够自主可控,部分通用功能反哺社区。传统行业相对来说还在犹豫,MySQL、Percona、MariaDB都有落地的。我个人当然还是倾向于MariaDB这一方。


紧跟使命:Oracle、Postgres当前,MySQL的漫漫流行路


一直以来,MySQL紧随其发展目标,致力于构建开源数据库领域最流行的数据库。它最吸引我的特性还是它的开放性及插件式结构,支持各种定制化和功能的扩展。若将数据库学习视作登山,那么Oracle便是珠穆朗玛峰,Postgres是阿尔卑斯山,而MySQL就只相当于家后面的一个小山坡,但是这个小山坡上关系型数据库该长的树它基本都有。


CSDN:那在您看来 MySQL之所以这么受欢迎,是出于什么原因呢,是否有什么特质?


李春:这和它确定的目标或者说它给自己定义的使命有关,比如说阿里巴巴的使命是“让天下没有难做的生意”,也就是B2B的使命,我们沃趣的使命是“让数据发挥它的价值”。MySQL也一直在按照这个使命前进:开源数据库领域最流行的数据库,这跟Postgres的使命不同,Postgres要做的是世界上最先进的数据库,这让我想到一个词——“基因”。


MySQL为了做到“最流行”,会兼容各种各样的语法和场景。语法可以兼容Oracle或SQL server的部分语法,初级的开发人员可以一键安装MySQL,甚至你可以把他运行在嵌入式设备上。据Gartner权威统计显示,Oracle目前仍然排名第一,而MySQL紧随其后,1400多分和1300多分,相差仅30分,这个差距其实不算大,而且MySQL在持续增长,而Oracle分数仍在下降,有可能明年MySQL就会超越Oracle成为最流行的数据库。


CSDN: 在您眼中较之其他的关系型数据库,MySQL在适用场景等方面有什么差异?它吸引您的特性是什么?


李春:我觉得MySQL相对来说是所有关系型数据里最容易上手的,我们经常看到书店里面有“21天精通MySQL”这样的书,还有“21天精通Python、PPH”等,但如果你在Google上搜一下,就会发现其中“多少天精通MySQL”是最多的,为什么?因为即使是一个门外汉来学习MySQL,从安装部署到如何,都可以在几天内学会。MySQL相对来说不会像Oracle一样是一个很高大上的东西。若将数据库学习视作登山,你会发现,Oracle是珠穆朗玛峰,Postgres是阿尔卑斯山,而MySQL就只相当于家后面的一个小山坡。但是这个小山坡上关系型数据库该长的树该有的东西它基本都有。


由于这个特性,MySQL其实更适用于互联网或者偏互联网的场景,更加适合高并发量、业务流程相对简单的场景。但由于现在MySQL-特别是MariaDB以及Galera等的引入,MySQL现在也能适用于OLAP或者对数据强一致性要求特别高的场景。


它最吸引我的特性还是其开放性和插件式结构,以及支持各种定制化和功能的扩展。


循序渐进的DBA学习攻略:兴趣+勤奋+多实验+多写+多说+乐于分享


数据库学习由浅入深,远非一日之功。首先,要理解问题;其次,要在实践中切实操作;其三,同他人分享自己验证过或者自认为理解的东西;再者,要能够将上述所得诉诸文字。以兴趣为基,勤奋相佐,紧守四多法则:多实践、多写、多说、多分享。


CSDN: 在MySQL管理、性能调优和高性能架构部署上,您是否有什么好的经验分享?


李春:我们沃趣团队在MySQL高可用这块和数据研究师这一方面是非常关注的,因为我们服务的是传统厂商,虽然我们大多是从事互联网出身,但是我们希望能够把数据库,特别开源数据库这一块多年积累的经验带给传统行业,以适应互联网时代的发展趋势。


如今我们的传统行业,也已经明显意识到互联网时代的来临,我们希望充分利用这个契机,让传统行业重新焕发生机。从我们服务传统行业的这些年来,我们发现其实传统行业也有非常多值得互联网行业借鉴和学习的地方,包括阿里巴巴现在也会聘请很多传统行业的专家帮助重新梳理其业务结构和管理机制。另外,传统行业严谨的态度和规范的流程,也让我们在协助解决互联网业务问题时收益颇多。


打个比方:某银行或者证券推出的掌上APP应用,就是一个互联网的业务,之前大家都需要到银行或者证券交易所去访问、下单、买卖股票等,但是现在可以直接在手机上操作,但这对银行后台的IT、运维,以及数据库的要求都会非常高。我们在阿里巴巴完完整整地经历了这样的过程,也愿意分享给我们的客户。


在MySQL管理、性能调优和高性能架构部署方面,我的建议是先采集信息,确定瓶颈,针对具体的问题具体地去解决。我们目前的经验来说,数据库首先存在两个方面的问题:IO问题和开发规范问题。数据库是一个严重依赖IO资源的应用,很多数据库还运行或者计划运行在单个SAS盘或者非常老旧的、跟其他业务共用的共享存储上,性能当然提升不了;另外一个问题就是开发人员由于功能要求比较急,之前也完全没有互联网开发经验,对怎么使用MySQL,避免浪费集中数据库资源完全没有概念,导致表结构和SQL设计极不合理。


CSDN:您在选择数据库的时候,有哪些比较看重的因素?


李春:关系型数据库,我们的客户基本会在Oracle、MySQL、Postgres三者之间比较,其实这三方面沃趣科技都会支持。前面说了他们三者之间的区别,很多客户的系统原来就在Oracle上面,这样的话,迁移到性能更高的QData Oracle平台不需要修改应用,当然是比较好的方式。如果是一个新的业务,或者预计要对互联网开放,是一个高并发、大数据量的业务,建议还是采用MySQL来承载,这在阿里巴巴以及近年来在开源数据库上已经验证过很多次了。


由于我个人从事的是MySQL,推荐的当然是MySQL,好处如下:


  • 简单易用:对开发人员来说上手简单,所以对运维人员而言,作为一个初学者,一年之内就可以学会MySQL的运维

  • 社区基数大:开发人员和运维人员(SA甚至都不一定是DBA)对MySQL都能说出一二三来,你不用担心你遇到的任何问题在Google上搜索不到

  • 人才问题:现在MySQL的人才需求量越来越大,人才都在往MySQL走,工资也越来越高,现在做MySQL等相关培训的也越来越多,人才多了,这个行业自然也就越来越好。


总体来说,数据库只是你解决业务问题的工具。人生就这么几十年,不用太纠结。


CSDN:在您看来从事MySQL开发,需要具备哪些必要的知识储备?


李春:如果您说的是使用MySQL的应用开发,很简单,有很多入门书籍,一学就会;如果要用好MySQL,参考网上的MySQL开发规范。


如果您说的是MySQL的源码开发,我觉得主要是两方面。第一,MySQL本身是用C/C++语言开发的,那么首先在C/C++,这一块的技能水平肯定要有一定的储备。另外MySQL是一个关系型数据库,而关系型数据库比较基础的事务、日志和锁的机制,这种比较经典的基础理论方面的东西,肯定也必须要掌握。其实这两块是殊途同归的,作为MySQL的开发人员,这两块技能都需要掌握,把两者结合起来,才能开始你的源码之旅。


但是作为科班出生的我,认为做MySQL源码之前最好经历以下几个阶段:第一阶段是安装部署,以及最基础的权限、表、SQL管理、备份监控搭建等;第二阶段是能够排错,就是看到MySQL有一些什么错误,或者说错误日志里面有些什么问题,或者在操作过程中出现报错时,知道这个错误应该怎么去解决,怎么辅助开发人员或运维人员解决问题;第三个阶段是理解原理。在第二阶段,只是知道怎么去解决问题,但在第三阶段是要求能理解MySQL为什么这么做,是否还有什么可以改进的地方。这时对关系型数据库的理论,以及MySQL本身运行的机制会更加熟悉;第四阶段是能看懂源码。第三个阶段可能只是猜测,或者MySQL文档里获得这样的一些描述性信息,但源码到底是不是这么做的?不得而知。到了第四步就开始源码之旅了,能够看到源码到底是什么,是怎么实现的;第五个阶段分两个小阶段,第一层境界是能够看懂源码以后,就可以开始提交Bug或针对这个Bug做Patch进行修复,第二层境界就是对其中的原理一清二楚,比如现在要加一个功能,能知道怎么去加,并且加了之后能够保证数据库不会影响其他部分。


现在的Oracle ACE和ACED确实对Oracle的实现原理理解得非常透彻,按照葵花宝典秘籍也只能修连到第三阶段的顶峰。但是MySQL的大侠可以继续深入做到第四、第五个阶段,是否能够修炼到改操作系统、文件系统、内核、甚至CPU指令集的葵花宝典隐藏秘技,就是顶级大神们需要给我们布道的了。


CSDN:您刚刚有提到MySQL源码,而MySQL的源码有上百万行,那么在阅读MySQL源码上是否有些属于您的诀窍?


李春:其实我刚才说了五个阶段,建议初学者首先要进入第四个阶段,不要从第一个阶段就跳到第四个阶段,按照我的经验,如果你还在入门阶段就去阅读源码是很痛苦的,因为我就是一个典型的跳跃被毁者:我在刚从时空数据库跳到MySQL的时候,由于我对C也有一定的基础,所以我当时直接去看MySQL源码,去做MySQL工具,这是个很痛苦的过程,因为我完全不理解它做这个东西的原因和意义。之后我回过头来从第一个阶段,到第二个阶段,再到第三个阶段一步步走完之后,我现在去看源码,我就是有目的、有方法的,因为我知道我现在想要了解什么,我知道大概可以有哪些做法,然后我再去看它的文档,看它到底选择的是哪种做法,以及其选择这个做法的原因——文档都会告诉我,这时我再去看代码,就觉得一切都很顺理成章,这就相当于把前面的所有疑问都解决了之后,再去看它的源码,这时我就不会再通篇去看,而是只挑选感兴趣的点去看,看它到底是怎么实现的。


所以我建议大家在阅读MySQL源码之前,先经历前面三个阶段,这三个阶段也并不需要你那么熟悉或者精通。你可能对其中某一块,比如MySQL的复制,或者MySQL的事务处理比较感兴趣,带着一个问题,或者开发人员或者运维人员找到一个Bug,结合知识和理论基础去分析,看日志,重现现象,再来调试代码,深入查看源码,就变得非常容易理解,非常容易看下去了。


CSDN:您前面有说到MySQL相对入门容易一点,那么从学习者的角度,您认为该如何系统地去学习MySQL?


李春:MySQL入门的话有很多种方式,如果希望系统地去学习MySQL,可以去参加一些相关的基础理论和实战的培训。并且通过实际工作中的问题去测试,去验证,去排查。另外也需要多阅读一些博客文章,因为现在MySQL跟其他的Oracle或Postgres的社区有个非常大的区别,就是它的社区非常广泛而且有很多你遇到的问题基本上80%别人都遇到过了。


另外,如果有一个人能够耐心地指导你,理论结合实践能够大大缩短你成长的时间。如果在入门阶段,参加了培训班,但是培训班只能带你入门,你所学到的只是简单的理论,或者实战的操作流程,但你是否能理解为什么要这么做?比如update一条记录时,这里为什么要设计一个X锁,那里为什么要设计一个读写锁,有些东西好像跟传统的关系型数据库理论有冲突?这些问题必须要自己去融会贯通,你如果有个好老师,那恭喜你,中大奖了。当然你自己追根究底的技术热情也需要一直保持着,才能获得比较好的效果。


然后在学习这个问题上,我也有一个小总结。第一,你首先要把这个问题先听进去,并且听得懂,因为有些时候,我发现很多同学去参加论坛,但老师讲的一些东西,他并不能理解,所以你首先要不断追问老师,深挖问题的根本原因,多问几个为什么;第二,听懂了以后,还要去做实验,因为听懂并不代表这个老师说的是正确的,有些老师可能确实很牛,但是也有可能对某一块不是那么精通。所以对自己不熟悉或是想要了解的,要进行验证。特别是在运维这一块,要勤于实验,拿具体数据和实验结果说话。第三,对于自己验证或者自认为理解的东西,需要多去和别人分享。因为从“听懂”到“能够把这个问题跟别人说清楚”,这是一个质变的过程,甚至有可能你在梳理PPT的时候或者在分享的时候,会发现更多之前没有注意或者遗漏的问题。很多人可能认为到了这一步就是独孤求败了。然而其实这还不是最后的一个阶段,第四个阶段是你能把它写出来。不是说去写一个操作性的博客,也不是简单记述操作和验证的过程,而要去追究里面的原理,要去追究为何如此设计、这么做的好处、不那么处理的好处,你真正把这些写出来的时候,你会花很多时间去论证和梳理思路。第三个阶段分享完了,基本上是说过就结束了,但是写博客或者写方案是一个文字工作,是要留底的,你就会自然而然地要求其中全部所涉内容的正确性。个人认为,只有经历了这四个阶段,才能证明自己真正基本掌握了这个问题。


CSDN:您觉得作为一名DBA应该具备哪些素质,优秀的MySQL DBA是如何炼成的?


李春:我觉得不仅仅是MySQL DBA,各行各业,要把一件事情做好都不是一件容易的事情。第一,要求你对这块要有兴趣,如果没有兴趣的话,你会做得很累,也会把自己给逼死;第二,要勤奋,我见过太多聪明的人,对某些东西确实很感兴趣,然后最终发现lol才是他的最爱;或者有些人遇到了一个难题就退缩了,我遇到的好多牛人,他们遇到了难题第一反应竟然是“兴奋”;第三,多实验+多写+多说+乐于分享,多去交流。有一些人可能会把自己的东西封闭起来,觉得我这块做得很好,为什么要和别人分享,别人会盗窃我的思想和方法吧?但我们之所以做开源数据库,就是要借助社区的力量,也要反哺社区,这也是开源社区的初衷。另外,你在分享的过程中也是跟别人思想碰撞,进一步论证自己思想的过程。


当然,我并不是一个服务免费的倡导者,每个人在某一个行业的努力都应该得到相应的回报。有些人说,你不就是帮我拧了一个螺丝,改了一个数据库参数吗。但这个螺丝和这个数据库参数可能是阅读了数百个数据库参数含义,翻阅过成百上千国内外技术文章,阅读过几百页英文原版手册积累出来的结果。


现在越来越多的人强调工匠精神,我觉得优秀的MySQL DBA应该是有工匠精神的。