Editor’s Note: a few days ago, there was a hot post on Zhihu, the topic of “Why is the salary of MySQL DBA higher than that of Oracle due to its low technical difficulty?” The topic soon aroused a heated discussion. From the comments, most people almost accept the fact that the salary of MySQL DBA is indeed high. So what is the reason? Let’s share with you the reply of MySQL expert Liu Wei.

There are two main reasons for the tree divide: 1, market supply and demand relationship, 2, technical requirements are relatively high these two factors have not been improved, resulting in the current market situation is: it is difficult to recruit MySQL DBA, it is even more difficult to recruit desirable MySQL DBA.

First say a common sense of wage bargaining, wage level industry comparison, is the competition technology and so on can accumulate factors, but the comparison between industries, mainly depends on the relationship between supply and demand.

Oracle’s OCP and even OCM have been disabled by domestic training institutions in recent years. In the case that the price of Oracle DBA generally refers to the certificate level, the bargaining power of Oracle DBA is relatively insufficient. In fact, the official OCP of MySQL is not widely recognized by various Internet companies (the main source of high salary of MySQL DBA). There is no recognized standard in the industry, except the endorsement of the experience of large Internet companies (company level). It is difficult to have a general grade standard, only free heart card, the price of free heart card is, completely depend on supply and demand to determine the market price, when the lack of people, all kinds of high prices are willing to. The circle of DBA itself is not large, and the gap of MySQL DBA is an industry gap, which will naturally make the income level rise. In the market economy, with the increasing number of people in this circle (Oracle DBA to MySQL DBA, operation and maintenance of MySQL DBA, various training institutions to produce MySQL DBA), MySQL DBA income will not remain at a high level forever.

The difficulty of learning MySQL itself is very low. In fact, the pure income of MySQL DBA is only a little more than that of Oracle DBA because of the supply and demand relationship. In fact, it is ok, and it will not reach the same proportion.

Generally speaking, Internet companies often add the following requirements when recruiting MySQL DBAs:

Some people mention the scale problem. Indeed, among the DBAs who are willing to pay high salaries, automation development accounts for a large part. The quotation of more than 30K has been contacted, which is mainly because MySQL does not have a recognized reliable basic operation and maintenance system so far. Oracle’s products do well (OEM, Grid MGR, ASM, etc.) and Oracle DBAs have no such pressure or requirement.

Therefore if the enterprise USES the MySQL database, in the recruitment, in addition to the required candidates to expertly automated operations and development at the same time, also need to be a skilled MySQL DBA, if a company without a special ops front-end developer (actual situation look, even if there is, the level is limited, high level front to more difficult), Even the front end also need to do their own, equal to about half the full stack.

2, Oracle can indeed handle the normal operation and maintenance of MySQL, backup and recovery, DDL changes, etc. I have seen too many small companies MySQL DBA delete data by mistake, backup failure, this is very related to technical ability, responsibility and other aspects, Oracle has a lot of mechanisms such as Flashback, recycle station can be put out of the fire. But MySQL can only say “hopeless” a lot of the time.

MySQL is a much more vulnerable database than Oracle, and “unrecoverable operation” is much easier to encounter than Oracle. How to ensure the safety of operation is a very troublesome problem, especially the quality of MySQL documentation (not black, MySQL documentation is already one of the most complete open source software documents. MySQL documentation is much less referential than Oracle documentation.

3. It is not required to be able to change the code, but at least familiar with the various implementation mechanisms of MySQL and can be used for work. The most basic requirements are C and C++ proficiency. This can rule out the definition of a MySQL DBA, but even as a MySQL DBA, if there is a code bug, such as a program code deadlock (not a transaction deadlock, but a code bug, such as a mutex deadlock), you shouldn’t want to go to a big company acquaintance every day and ask for an inaccurate answer.

4. Have a full understanding of Linux, such as APUE, CSAPP, and environment optimization including SSD optimization, which becomes a comprehensive topic. First of all have to admit that the progress of the hardware to MySQL optimization requirements are not so strong, and without any requirements before a bottleneck, but the CPU, memory, network, storage, file system and so on aspects of requirements, not simply ignore the request. After all, the so-called bottleneck is not difficult to achieve (my own data is 3 to 5 times the performance of the gap, Not necessarily a universal standard).

5. Have an in-depth understanding of the entire database system (including caches, queues, and big data), not just the degree of installation. If Linux is a small company, big data is almost always handed over to dbAs in smaller companies, such as HBASE, REDIS, SPARK, KAFKA, MONGODB, ElASTIC SEARCH, and so on. It’s all databases anyway. But in fact, RDBMS and NOSQL (including NOSQL between each other) operation and maintenance is very different, and the big data system has a popular model every year, learning pressure is actually very big (see the front end of the friends far away ~~ a new version of incompatible with the old version every week, every month there is big news framework).

6, SQL optimization can be based on the business shape of the appropriate recommendations are known MySQL optimizer is stupid, so in this case, how to do SQL optimization itself is a problem. For example, one of my criteria is that a table join within three tables can write an execution plan by hand and give a more appropriate execution plan and more appropriate SQL writing based on the different data distribution proposed. Actually depots table is a requirement of the subordinates, such as in the case of depots table, how fast multi-table operation data aggregation, it stretched out, to the optimization of the middleware or class middleware use optimization (including SOA (now some people like to call the service) under the system of data aggregation), is a need to know, have actual practice, a little more, Is as middleware development and distributed database development (C/JAVA/GO) need to know.

Those who meet these conditions will generally get a good bargain. However, the “illusion of high water mark” caused by such a transaction will make ordinary OPERATING DBAs have higher expectations on income, leading to the reduction of low bargain price and higher market transaction price.

Will it last? The learning period for a DBA (training classes are not included) is usually two to three years. Considering that MySQL DBA will take off in these two years, it is estimated that when there are more people in the market, the income of MySQL DBA will decline.

Of course, I’m talking about pure operational DBAs, high tech dbAs, whether it’s Oracle DBAs, whether it’s MySQL DBAs, whether it’s PostgreSQL DBAs, DB2 DBAs, etc., the income level of DBAs is not going to change much or it’s only going to get higher, the supply rate of this segment, Well below the growth rate of demand.

Postscript: Oracle DBAs may smell a faint whine of sadness. What do you think about the current situation of salary inequality? Please leave a comment.