My years in MySQL


Author: Lai Zheng (Allen Lai), before the official MySQL team members, focusing database kernel development for nearly two decades, has worked up a dream, Teradata, Founder and MySQL InnoDB Storage Engine team is up to the dream database kernel, Founder XML database , And MySQL InnoDB's GIS support, the main developer of transparent encryption. He is currently an expert engineer in the database team of Tencent TEG Cloud Architecture Platform Department, responsible for the development of Tencent Cloud CDB database kernel.




Interview

In the spring of 2012, the sun was shining and the birds were singing and the flowers were fragrant. I was struggling to tap the keyboard with my friends in an orange building in Zhangjiang. As a soft phone rang, the phone screen showed a stranger Was it another harassing phone number? I didn’t care about him, so I continued to tap on my keyboard. The phone was shaking all the time, as if urging me, I picked it up, the phone was connected, and a very soft and professional female voice came from the other end, "Hello, I am Oracle's recruitment consultant Amy, is it convenient for you now? ?...". Since then, my career has crossed with MySQL.

Amy told me that the MySQLInnoDB team is interested in recruiting suitable database kernel engineers in China and asked me if I would be interested in joining. I go to MySQL, the world's most popular open source database, invite me to join? I answered her without even thinking about it, of course there is, and I am interested. Amy is a very professional HR who arranged the interviews after me very efficiently. With a hint of anxiety and excitement, I started the interview for the MySQL team.

The first round of the interview: InnoDB team manager, Calvin. Calvin is an expert in the field of database, one of the great people who graduated from the University of Science and Technology of China in the early years (I will specifically introduce the great people of MySQL).

The second round of interview: InnoDB performance optimization expert Innam, Innam is the author of buffer pool performance optimization.

Interview round three: InnoDB Great God o. o One of the founding team members of InnoDB, a great expert in storage engine technology

The fourth round of interview: InnoDB architect Jimmy. Jimmy is also an all-round expert in the database kernel, and was previously the boss of the Sybase System kernel team.

The MySQL interview did not have as many rules and difficulty as imagined. The four rounds were basically chats, mainly around the things done before and the understanding of the database kernel. I was impressed by three things. One was that Innam’s accent was too heavy. In addition to calling from Canada, I did not have a high level of English listening, so I didn’t understand many questions. Batch.

The other is that o asked a question about how to find a transaction deadlock using google talk, and the typing speed was so fast that I thought the opposite was a typing machine, until I saw him, real people discovered that he is a program machine without emotion (Actually, o is still a very interesting person. The following series will introduce some interesting things about him). Jimmy's interview was conducted in a coffee shop on Nanjing West Road. The two people seemed to have known each other for a long time. Jimmy is a particularly admirable person, very friendly. The overall interview process feels relatively easy, even without deliberate preparation, perhaps it is really lucky.

team

As far as traditional software companies are concerned, the MySQL team structure is relatively flat, with few levels. Basic employees like me are only five floors away from Oracle's boss Larry Ellison. The main reason for this is that for a long time after Oracle acquired MySQL, it basically retained the original structure and personnel of the MySQL team, but made some simple access.

The entire MySQL is divided into several large teams, such as MySQL kernel, MySQL replication, MySQL NDB, etc. These large teams are subdivided into several smaller teams, for example: the MySQL kernel team is divided into optimizer and server layers. , InnoDB, QA, etc.

At that time, the InnoDB team I was on had Calvin, Kevin, Jimmy from the United States, O from Finland, Sunny from Australia, Innam, Michael from Canada, Mattias from Sweden, Satya from India, Vasil from Bulgaria, plus Chinese I, a total of eleven people from eight different countries, are a fully global R&D team. Everyone in the team is an experienced database kernel programmer, such as: o is the most experienced god who joined InnoDB in 2003, Sunny is the future InnoDB manager, and Kevin is also a veteran who has participated in the development of the Falcon storage engine. Jimmy once led the Sybase R&D team and so on. It is really a lucky thing to be able to work with so many big guys.

2013 Team meeting in Shanghai

: : : Jimmy , Yasufumi, Allen, Kevin, o, Shaohua, Mattias, Satya, Sunny, Vasil , Aditya, ??, Annamalai, Bin, Michael, ??, Krunal

jobs

Working at InnoDB is a very happy thing, because I can work from home. This is a very rare benefit for a parent who needs to pick up and drop off their children every day. In addition, it saves a lot of commuting time. You must know that it takes more than two hours to go to Oracle's office in Shanghai.

Since it is a global team, and the members are more experienced, so everyone works in a very special way. Basically everyone is focused on their own work, relatively independent, and when they need to cooperate, they communicate through pigeon, email or phone. There will be a weekly meeting every week, and everyone will report on their work progress and have discussions. A team meeting is organized every year, and everyone gathers from all over the world to summarize the work of the previous year, plan the goals for next year, talk about ideals, and talk about life.

At MySQL, the development process is very standardized. Take a bug fix as an example, roughly going through the following steps.

First, you need to analyze and reproduce the bug according to the bug report, and then find a repair method. After discussing with the 5th level, determine the repair plan and create a new code branch through bzr.

After the coding is completed, you need to create the corresponding MTR test case and put it on the reviewboard together with the repair code. Please review it. The review process may last for several rounds, because a great god like o reviews very rigorously and will not let go of any problematic details.

After the review is completed, the code to be submitted needs to be put on the test cluster for testing. This automated test system is very powerful, it will compile debug and release versions on multiple platforms at the same time, and then test in parallel.

After the test is completed, the code can finally be merged into the trunk after confirming that there are no problems.

My first submission

The above is just a simple bug fixing process, and for more complex feature development, the steps will also include the pre-create task worklog, and fill in the HLD (High Level Design), LLD (Low Level Design) and other designs in the worklog accordingly Content, and develop prototypes, etc.

The feature worklog of the check space index I made

In the six years of working with InnoDB, I made a total of 461 submissions. The main features I have made include InnoDB's support for spatial indexing, transparent encryption, new data dictionary, etc. The following is a list of some of the worklogs:

WL\#6968 InnoDB GIS: R-tree index support
WL\#6455 InnoDB: GEOMETRY datatypes support
WL\#6745 InnoDB GIS: support DML operation for InnoDB R-tree Index
WL\#7740 InnoDB GIS: Enhance Check Table for InnoDB Spatial index
WL\#8548 InnoDB: Transparent data encryption
WL\#9290 InnoDB: Support Transparent Data Encryption for Redo Log
WL\#9289 InnoDB: Support Transparent Data Encryption for Undo Tablespaces
WL\#9531 InnoDB_New_DD: Enable table encryption and transparent compression
WL\#9535. InnoDB_New_DD: Remove InnoDB system table and modify the view of their
I_S counterparts
WL\#9537 InnoDB_New_DD: Support InnoDB table import/export for new DD

In the past six years, I feel that I have gained a lot. I have experienced the whole process of how to develop an open source database software product like MySQL. I also understood how a mature R&D system and an international team operate. Working with foreign gods not only learned knowledge and skills, but also discovered another way of working, living, and even thinking completely different from ours.

go away

With the explosive rise of Internet companies and the rapid development of the MySQL ecosystem, many members of the MySQL team have obtained better development opportunities and gradually leave. And I also began to have an indissoluble bond with TXSQL, the CDB kernel of Tencent Cloud Database. Coincidentally, less than a year after I left MySQL, Oracle announced the closure of the Chinese R&D center. For Oracle, facing the strong impact of Amazon, Ali, Tencent and the wave of going to O, it will experience a difficult transition period. For MySQL, it will still be the world's most popular open source database in the foreseeable future. As a former MySQL person, I will continue to help the development of MySQL at Tencent and contribute myself to the MySQL ecosystem through the CDB core TXSQL. the power of.

PS: In the follow-up series of articles, I will continue to share some interesting things with you to let you know more about MySQL and its Tencent version TXSQL, I hope you like it.

Tencent Technology Official Exchange WeChat Group has been opened

Join the group and add WeChat: journeylife1900

(Remarks: Tencent Technology)

Guess you like

Origin blog.csdn.net/Tencent_TEG/article/details/109505116