主頁 > 資料庫 > 我在MySQL的那些年(一)

我在MySQL的那些年(一)

2020-11-10 19:01:05 資料庫

作者 賴錚(Allen Lai) 前MySQL官方團隊成員,專注資料庫內核開發近二十年,先后就職于達夢,Teradata,北大方正以及MySQL InnoDB存盤引擎團隊,是達夢資料庫內核,方正XML資料庫,以及MySQL InnoDB的GIS支持,透明加密功能的主要開發者,現任騰訊TEG云架構平臺部資料庫團隊專家工程師,負責騰訊云MySQL資料庫內核的研發,

image.png

Part1 相遇

2012年的春天,我正在張江的一棟橙黃色的大樓里,窗外的陽光很好,我跟我的小伙伴們正在一起奮力地敲打著鍵盤,隨著一陣輕柔的電話鈴響起,手機螢屏上顯示出一個陌生的號碼,“是不是又是騷擾電話?”沒管他,我接著做自己的事情,但是手機一直在震動著,好像催促著我,我拿起電話接通,那頭傳來一個非常輕柔而且職業化的女聲,“您好,我是Oracle的招聘顧問Amy,請問您現在方便嗎…”,

我的職業生涯從此與MySQL發生了交集,

Amy告訴我MySQL InnoDB團隊有意在中國招聘合適的資料庫內核工程師,問我有沒有興趣加入,MySQL是什么,the world’s most popular open source database,邀請我加入?我想都沒想就回答她:“當然有,而且興趣很大!”

Amy是個非常專業的HR,非常有效率的安排了我后面的面試事宜,懷著一絲忐忑和興奮,我開始了進入MySQL團隊的面試,

面試第一輪:InnoDB團隊manager,Calvin,Calvin是資料庫領域的專家,早年中科大畢業出國的那批牛人之一(后續的文章我會專門介紹MySQL的牛人們),

面試第二輪:InnoDB性能優化專家Innam,Innam是緩沖池性能優化的作者,

面試第三輪:InnoDB大神Marko,Marko是InnoDB創始團隊成員之一,存盤引擎技術的大神級專家,

面試第四輪:InnoDB架構師Jimmy,Jimmy也是資料庫內核的全能型專家,而且是之前是sybase內核團隊的老大,

完整的一套流程走下來,其實MySQL的面試并沒有想象中的那么多規則和高難度,前后4輪,基本都是聊天,主要圍繞以前做過的事情和對資料庫內核的理解,在面試程序中,讓我印象比較深(比較有趣)的是三件事:

一個是Innam的口音實在太重,加上從遙遠的加拿大打過來,我的英語聽力也的確水平不高,所以好多問題都沒聽懂,當時真的是慌得一批,

另外一個是Marko用google talk問了一個如何發現事務死鎖的問題,他的打字速度超級快,以至于我認為對面是個打字機器,直到見到他真人才發現,他就是一臺沒有感情的程式機器(其實,Marko還是很有意思的一個人,后面我會介紹他的一些趣事),

最后,和Jimmy的面試是在一個南京西路的咖啡廳里面進行的,兩個人似曾相識一般聊了很久,Jimmy是特別贊的一個人,很有親和力,整個面試的流程總體感覺比較輕松,我也沒有刻意準備,或許真的是幸運吧,

Part2 團隊

就傳統的軟體企業來說,MySQL的團隊架構相對比較扁平化,層級很少,像我這樣的基礎員工,離Oracle最大的老板Larry Ellison也就隔了五層,這里面的原因主要是Oracle收購MySQL后的很長一段時間里,基本保留了MySQL團隊的原有架構和人員,只是做了一些簡單接入,

整個MySQL分為好幾個大的團隊,有MySQL kernel,MySQL replication和MySQL NDB等等,這些大的團隊里面又細分為若干小的團隊,比如:MySQL kernel團隊里面又分為優化器,server層,InnoDB和QA等,

當時,我所在的InnoDB團隊里有base在美國的Calvin,Kevin,Jimmy,芬蘭的Marko,澳大利亞的Sunny,加拿大的Innam,Michael,瑞典的Mattias,印度的Satya,保加利亞的Vasil,再加上中國的我,一共只有十一個人,卻來自八個不同的國家,是一個完全全球化的研發團隊,團隊里的每一個人都是經驗豐富的資料庫內核程式員,比如:Marko是2003年就加入InnoDB的資歷最深的大神,Sunny是日后的InnoDB manager,Kevin也是曾經參與過Falcon存盤引擎開發的老將,Jimmy曾經領導過Sybase的研發團隊等等,可以跟那么多大佬一起作業,實在是一件幸運的事情,

2013 Team meeting in Shanghai

右起:Jimmy,Yasufumi, Allen, Kevin, Marko, Shaohua, Mattias, Satya, Sunny, Vasil,Aditya, ??, Annamalai, Bin, Michael, ??, Krunal…

Part3 作業

在InnoDB作業,是一件非常開心的事情,因為可以在家上班,這一點說出來相信就有很多人羨慕了,而這對于一個每天需要接送孩子的家長(我)來說,更是非常難得的福利,不僅可以按照自己的節奏分配作業和生活的時間,另外也節省了大量不必要的通勤時間,要知道,去一次Oracle在上海的辦公室,來回要兩個多小時的時間,

由于是一個全球化的團隊,而且,成員也比較有經驗,所以,大家的作業方式也很特別,基本上是每個人都專注于自己的作業,相對比較獨立,需要合作的時候,通過pigeon、郵件或電話溝通,每周會開一次周會,大家各自匯報自己的作業進展情況,并進行討論,

除了周會,我們每年還會組織一次team meeting,大家從全球各地匯聚到一起,總結上年的作業,規劃明年的目標,談談理想,聊聊人生,

在MySQL,研發的流程非常規范,以一個bug修復為例,大致要經歷以下幾個步驟:

首先,需要根據bug report來分析并復現bug,然后找到修復方法,經過和5級大佬討論后,確定修復方案并通過bzr創建新的代碼分支,

編碼完成后,還需要創建對應的MTR test case,并和修復代碼一起,放到reviewboard上面請大佬review,Review的程序可能會持續好幾輪,因為像Marko這樣的大神review的時候非常嚴謹,不會放過任何一個出問題的細節,

Review完成后,需要把要提交的代碼放到測驗集群上面去測驗,這個自動化測驗系統非常強勁,它會同時在多平臺上面編譯好debug和release版本,再并行測驗,

測驗完成,確認沒有問題后代碼才能最終被合并到主干,

我的第一個提交

以上只是一個簡單的bug修復程序,而對于更為復雜的特性開發,步驟還會包括前期的創建任務worklog,并在worklog里面相應的填寫HLD(High Level Design),LLD(Low Level Design)等設計內容,并且開發原型等,

我做的check空間索引的特性worklog

在InnoDB作業的六年時間里,我一共做了461次提交,做過的主要特性包括,InnoDB支持空間索引,透明加密,新的資料字典等等,以下是其中一些worklog的串列:

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

在這六年里,自己感覺識訓了很多很多,體驗到了MySQL這樣一個開源的資料庫軟體產品是如何進行研發的整個程序,也了解了一個成熟的研發體系和國際化團隊是如何運作的,與國外大神們一起作業,不僅僅是學習到了知識和技能,也從他們身上發現了一些與我們完全不一樣的作業,生活,乃至思維方式,這對我來說也是一種很新奇的體驗,

Part4 離開

隨著互聯網公司的爆發式崛起,以及MySQL生態鏈的迅速發展,MySQL團隊的很多成員獲得了更好的發展機會而逐漸離開,而我也開始了和騰訊云資料庫CDB內核TXSQL的故事,

巧的是,就在我離開MySQL不到一年,Oracle宣布關閉中國研發中心,對于Oracle來說,面對著諸如亞馬遜,阿里,騰訊的強勢沖擊以及去O的浪潮,它將經歷一段艱難的轉型期,而對于MySQL來說,在可預見的未來依舊會是the world’s most popular open source database,身為曾經的MySQL人,我也會在騰訊繼續助力MySQL的發展,通過騰訊云MySQL的內核TXSQL為MySQL生態鏈繼續貢獻自己的力量,

PS:在后續的系列文章里,我將會陸續跟大家分享一些跟MySQL相關的有意思的事情,讓大家更了解MySQL和它的騰訊版本TXSQL,希望大家喜歡,

本文由博客一文多發平臺 OpenWrite 發布!

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/209599.html

標籤:其他

上一篇:centos7安裝ElasticSearch

下一篇:支持微信支付億級請求的TBase資料庫大揭秘

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more