前几天在知乎上出现了一个很热的帖子,话题是“MySQL DBA技术难度低为什么工资比oracle高?”,这个话题很快引起了热烈的讨论。从回帖的情况来看,大部分人几乎都默认了MySQL DBA工资的确高这个事实,那么原因是什么,我们节选MySQL专家刘伟的回帖跟大家分享。 以下是他回帖的原文:
主要有以下两个原因:
这两个因素一直没有得到改善,导致现在市场的行情是:招MySQL DBA难,招称心的MySQL DBA就更难。
先说一个工资议价的常识,工资水平行业内比较,是比拼技术等等可积累因素,但行业间比较,主要是取决于供需关系的。
这些年OCP甚至OCM都被国内的培训机构玩残了,在Oracle DBA的价格普遍参考证书等级的情况下,Oracle DBA的议价能力相对不足。
官方的OCP实际上目前看被各路互联网公司(MySQL DBA高工资的主要来源)认同度较小(见过说考MySQL OCP算降分项的说法),业内没有公认的标准,除了大个互联网公司的经历(公司level)背书,很难有个通用的等级标准,只能自由心证,自由心证的代价就是,完全靠供需关系决定市场价格,缺人的时候,各种高价都是舍得的。DBA的圈子本身就不大,MySQL DBA的缺口是行业性的缺口,自然会让收入水平水涨船高,市场经济的情况下,随着这个圈子的人越来越多(Oracle DBA转MySQL DBA,运维干MySQL DBA,各路培训机构产出MySQL DBA),MySQL DBA的收入也不会一直维持在一个高水位的。
MySQL学习难度本身是很低的,实际上纯粹的操作MySQL DBA的收入,比较Oracle DBA只是因为供需关系多一点点,其实还好,并不会到一个什么样的比例,但如果加上一些限定条件,就很难找人了,供需关系急剧恶化导致找人的价格很难控制。
一般来说互联网公司在招聘MySQL DBA的时候常常会附加以下要求:
有人提到规模性问题,的确在肯给高工资的DBA里面,自动化开发是占比很大的部分,接触过的有30k以上的报价,这点主要因为MySQL到目前为止没有一个公认可靠的基础运维系统,都是各家自己造轮子。而Oracle公司产品做得好(OEM,grid mgr,ASM之类),Oracle DBA没有这么大的压力或者要求。
因此如果企业使用了MySQL数据库,在招聘时,除了要求应聘者能够熟练地自动化运维开发的同时,还需要是一个熟练的MySQL DBA,如果公司没有配置专门的运维前端开发(实际情况看,即使有,水平也很有限,高水平前端找人难度更大)的话,连前端也需要自己做,约等于半个全栈了。
的确能搞定MySQL的正常运维,备份恢复,DDL变更之类 见过太多小公司的MySQL DBA误删数据,备份失效的事情了,这点和技术能力,责任心等方面关系非常大,Oracle有很多机制比如flashback,回收站之类可以救火,但MySQL很多时候只能说一句“没救了”。
MySQL是一个远比Oracle脆弱的数据库 ,“不可恢复操作”远比Oracle容易遇到得多,怎么在操作的时候,保证操作的安全,是个非常麻烦的问题,尤其是MySQL那种文档质量(不是黑,MySQL文档已经是开源软件中最完备的文档之一了,但比比Oracle的文档体系,MySQL的文档可参考性小很多的)。
不要求能改代码,但至少对MySQL的各种实现机制非常熟悉并且能用于工作 最基本的要求是C,C++熟练,更进一步能自己修代码还不会出幺蛾子的,都被大厂收了做内核开发,那个供需关系更紧张也不是传统定义的DBA,这种可以排除出所谓MySQL DBA的定义,但即使是作为MySQL DBA,如果出现一个代码方面的bug,比如程序代码死锁(不是事务死锁,而是代码bug,mutex死锁)的时候,总不能每天想着找大厂熟人问一个未必靠谱的答案吧。
比如APUE,CSAPP讲到的东西都明白的地步,包括SSD优化在内的环境优化,这就变成了一个综合话题。首先得承认硬件的进步对MySQL的优化要求没有那么强,或者在一定瓶颈前没有什么要求,但cpu,内存,网络,存储,文件系统等等方面的要求,也并不是可以纯粹无视的要求 ,毕竟这个所谓的瓶颈并不难达到(我自己的数据是3到5倍的性能差距,未必能作为通用标准)。
对整个数据库体系(包括缓存,队列,大数据)都有深入了解,而不只是会安装的程度。 如果说linux运维包打天下是小公司的做法,那么在规模没有到相当大程度的公司,大数据相关的玩意,几乎一定会被交给DBA的,比如HBASE,REDIS,SPARK,KAFKA,MONGODB,ElASTIC SEARCH 这些,毕竟外行来看,反正都是数据库。但实际上,RDBMS与NOSQL(包括NOSQL相互之间)的运维差别非常大,而且大数据体系的玩意每年都有流行款,学习压力其实非常大(目送前端的同志远去~~每周一个不兼容老版本的新版本,每个月都有框架大新闻)。
都知道MySQL优化器很蠢,那么在这种情况下,怎么做好SQL优化本身就是问题。 比如我的一个标准是,三个表之内的表连接,可以手写执行计划,并可以根据提出的不同数据分布给出更合适的执行计划以及更合适的SQL写法。实际上分库分表是这个下属的一个要求,比如在分库分表情况下,如何最快地操作数据多表聚合,这点延展开来,到中间件的优化或者类中间件使用方式的优化(包括SOA(现在有人喜欢叫微服务)体系下的数据聚合),都是需要了解,有实际实践的,再多一点的,就是作为中间件开发乃至分布式数据库开发(C/JAVA/GO)需要知道的了。
满足这些条件的,一般都会拿到不错的议价,但这种成交造成的“高水位线错觉”,会让普通操作DBA对收入有更高的期望,导致低议价的减少,让市场成交价更高。
DBA的学习周期(培训班那种不算),一般是两到三年,考虑到MySQL DBA正经起飞,也就是这两年的事情,估计等个两三年,市场上人数更多的时候,MySQL DBA的收入应该是会有所回落的。
当然,我说的是纯粹的操作DBA,高技术水平的,无论是Oracle DBA,还是MySQL DBA,或者PostgreSQL DBA,DB2 DBA等等等等DBA的收入水平,不会有大的变化或者只会更高,这个细分市场的供应速度,是远远低于需求增长速度的。
看到这里,可能各位Oracle DBA都闻到了一股淡淡的忧伤,关于薪资的不公平现状,你怎么看,欢迎留言给出你的想法。
对于想步入数据库行业的新人或是希望大展手脚的数据库工程师,熟练 Oracle 和 MySQL 相关技能无疑是一块非常好的敲门砖。为此,StuQ 特邀搜狐畅游 DBA、Oracle 10g OCM & MySQL OCP 认证专家杨建荣老师帮你拿到迈进一线互联网公司中高级 DBA 的敲门砖!
购买本课程的同学,我们还将送出杨老师的亲笔著作《Oracle DBA 工作笔记》一本以及 StuQ 精心制作的《DBA 技能图谱》一册 。
快点「 阅读原文 」了解课程详情!