在這個(gè)海量數(shù)據(jù)大爆發(fā)的時(shí)代,以往單一的開源數(shù)據(jù)庫(kù)產(chǎn)品往往很難直接滿足企業(yè)的業(yè)務(wù)需求,在某些場(chǎng)景下,無(wú)論是性能、安全還是穩(wěn)定性,都面臨著各種各樣的問(wèn)題,而在最近,擁有多種企業(yè)級(jí)特性的騰訊云數(shù)據(jù)庫(kù)MySQL已經(jīng)連續(xù)多次獲得了官方認(rèn)可,這是怎么做到的?
回到最初的起點(diǎn),MySQL作為全世界最流行的開源數(shù)據(jù)庫(kù),同時(shí)也是DB-ENGINES排名中前二的關(guān)系型數(shù)據(jù)庫(kù),不用多說(shuō),相信每個(gè)數(shù)據(jù)庫(kù)領(lǐng)域的從業(yè)者都聽過(guò)這個(gè)熟悉的名字,在各種技術(shù)論壇里,關(guān)于MySQL的討論從未停止過(guò),干貨教學(xué)、使用技巧、問(wèn)題交流…正是MySQL良好的社區(qū)氛圍提升了其影響力,同時(shí),社區(qū)中的大牛對(duì)MySQL提出優(yōu)化方案、提交patch修復(fù)bug、探索前沿技術(shù)而使MySQL變得越來(lái)越好用。
一個(gè)放到MySQL社區(qū)貢獻(xiàn)的patch
在騰訊云數(shù)據(jù)庫(kù)團(tuán)隊(duì)就有這樣一位大牛,在國(guó)內(nèi)可以說(shuō)是最早接觸數(shù)據(jù)庫(kù)的姜宇祥,多年深耕于數(shù)據(jù)庫(kù)領(lǐng)域,職業(yè)生涯中還親身經(jīng)歷了中國(guó)最早那一批國(guó)產(chǎn)數(shù)據(jù)庫(kù)從零開始的整個(gè)研發(fā)過(guò)程,目前在騰訊云MySQL團(tuán)隊(duì)負(fù)責(zé)數(shù)據(jù)庫(kù)內(nèi)核研發(fā)。
他積極參與MySQL開源社區(qū)在中國(guó)成長(zhǎng)過(guò)程,通過(guò)技術(shù)宣講與技術(shù)文章助力MySQL在中國(guó)的傳播。
就在前陣子,他給MySQL提交了一個(gè)patch——這是MySQL官方直接放到5.7社區(qū)貢獻(xiàn)的patch如下:
InnoDB:The open and close sequence for table share instances(m_share objects)and dictionary table instances was modified to prevent accessing old m_share objects that could point to stale dictionary indexes.
Thanks to Yuxiang Jiang for the contribution.(Bug#31899685)
(原文詳見:
https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-34.html)
其中特地提及“感謝姜宇祥的貢獻(xiàn)”(Thanks to Yuxiang Jiang for the contribution)
那么,這個(gè)patch到底憑什么被官方感謝呢?
簡(jiǎn)單來(lái)說(shuō),這個(gè)patch修復(fù)了inndb的handler對(duì)象的index_mapping對(duì)象m_share中的index與ib_table不一致,原因是在獲取share對(duì)象時(shí),表對(duì)象的的引用計(jì)數(shù)被提前減掉了,表對(duì)象被淘汰出dict cache,從index_mapping指向了不確定的內(nèi)存地址的問(wèn)題。該問(wèn)題產(chǎn)生原因是open dict table和get share的操作順序不匹配。
以上是最近被采納的一個(gè)patch,在這之前,我們也分享過(guò)一個(gè)即將寫入官方源碼的bug解決之路,正是這些大牛的不斷貢獻(xiàn),才使得MySQL變得越來(lái)越好用,高效且穩(wěn)定。
一封來(lái)自官方的感謝信
同時(shí),也正因?yàn)檫@些值得被記住的貢獻(xiàn),以及騰訊云數(shù)據(jù)庫(kù)與開源社區(qū)緊密的合作,在20年底,MariaDB社區(qū)還給騰訊云數(shù)據(jù)庫(kù)專門寫了一封特別的感謝信,對(duì)騰訊云數(shù)據(jù)庫(kù)一直以來(lái)對(duì)社區(qū)的發(fā)展提供的支持表示感激(原文詳見:https://mariadb.org/thanks-tencent/)
作者Daniel Black在信中稱,“我要以MariaDB基金會(huì)的名義感謝騰訊在2020年為MariaDB做出的重大貢獻(xiàn),騰訊……為每個(gè)人提供了價(jià)值,同時(shí)降低了(我們的)維護(hù)成本?!边@得益于騰訊云數(shù)據(jù)庫(kù)一年來(lái)不斷的努力,根據(jù)其文章說(shuō)明,可以看到,這些貢獻(xiàn)其中主要體現(xiàn)在:
1.Drop Table Force
表的元數(shù)據(jù)損壞時(shí)支持強(qiáng)制刪除表;部分分區(qū)損壞時(shí)支持強(qiáng)制刪除分區(qū)。
2.Asynchronous Drop Table
異步刪除大表,降低刪除大表時(shí)帶來(lái)的性能抖動(dòng)。
3.Accelerate buffer pool init
并行初始化每個(gè)buffer pool instance,提升大內(nèi)存實(shí)例的啟動(dòng)速度。
4.Parallel Initialize Rollback Segment
并行讀取回滾段數(shù)據(jù),加快實(shí)例啟動(dòng)速度。
5.Redo log for NVDIMM in MariaDB
基于AEP設(shè)備的數(shù)據(jù)優(yōu)化方法,在多種寫場(chǎng)景下的數(shù)據(jù)庫(kù)性能都得到了大幅提升。
在促進(jìn)數(shù)據(jù)庫(kù)技術(shù)及社區(qū)的發(fā)展上,騰訊云數(shù)據(jù)庫(kù)從未停下過(guò)自己的腳步,正如Daniel Black所說(shuō),“騰訊云數(shù)據(jù)庫(kù)一直以來(lái)都在不斷協(xié)助解決各種社區(qū)上遇到的問(wèn)題,這表明了騰訊云數(shù)據(jù)庫(kù)不僅是專業(yè)的,也愿意和MariaDB合作?!痹谖磥?lái),我們會(huì)依舊在技術(shù)上持續(xù)深耕,為每個(gè)用戶和每個(gè)開源社區(qū)的開發(fā)者提供更好的服務(wù),與所有的MySQL專家、使用者、社區(qū)一起構(gòu)建越來(lái)越好用的MySQL生態(tài)。