撰寫本文查閱了大量參考資料,也得到很多朋友的指點(diǎn)幫助,特別感謝:
Jimmy Yang——阿里云數(shù)據(jù)庫(kù)研究員,原Oracle InnoDB Architect.
彭立勛——華為云數(shù)據(jù)庫(kù)總工程師,MySQL ACE Director,MySQL中國(guó)用戶組創(chuàng)始成員之一.
譚宇——玖章算術(shù)首席架構(gòu)師,原阿里巴巴技術(shù)總監(jiān),數(shù)據(jù)庫(kù)智能運(yùn)維研發(fā)負(fù)責(zé)人,OceanBase創(chuàng)始團(tuán)隊(duì)成員.
MySQL
「初出茅廬」
我是一只勤勞的小海豚,網(wǎng)名叫MySQL,出生于1995年5月23號(hào),正宗95后,你們可別小看我,我現(xiàn)在可是全世界最流行的開源數(shù)據(jù)庫(kù),全球有800萬(wàn)個(gè)實(shí)例呢。
早些年的事情我也不太記得了,只想起爸爸希望我的特長(zhǎng)是查詢數(shù)據(jù)比較快,幫他解決一些工作上的事情。Monty爸爸非常愛(ài)我,每天都陪伴在我身邊,教我技能,并且看到我每進(jìn)步一些就取個(gè)新代號(hào),真是望女成鳳啊。記得6歲那年,我還是個(gè)丑小鴨,代號(hào)是V3.23,開始有人認(rèn)識(shí)我了,感覺(jué)我小巧可愛(ài),不像有些前輩(Oracle)那么古板,他們雖然經(jīng)驗(yàn)非常豐富,但請(qǐng)他們干活得準(zhǔn)備個(gè)半天,并且貴得要死。我到處打黑工,基本不收費(fèi),并且把我的做事方法開源了,很多人開始幫我改進(jìn),感覺(jué)自己進(jìn)步神速。
「劍露鋒芒」
記得到2005年,我10歲,已經(jīng)進(jìn)化成V5.0,以前只會(huì)從表格里查查資料,我現(xiàn)在開始學(xué)會(huì)了不少高級(jí)技能(如:視圖、存儲(chǔ)過(guò)程、函數(shù)、觸發(fā)器),而且我還把內(nèi)部資料整理在叫information_schema的倉(cāng)庫(kù),讓大家更了解我,很多高級(jí)的事情他們可以查詢倉(cāng)庫(kù)自己干了,我第一次懂得與其他人協(xié)作完成事情,因?yàn)槲覍W(xué)會(huì)了分布式事務(wù)(XA)。雖然自己學(xué)會(huì)了很多技能,但是總是毛手毛腳,爸爸天天幫我擦屁股(bug太多?。?/p>
直到2008年,我13歲,進(jìn)化為V5.1,才開始大膽出去接客。那時(shí)很多中國(guó)的小伙伴開始了解我,他們之前一直是請(qǐng)Oracle這些老古董,后來(lái)互聯(lián)網(wǎng)業(yè)務(wù)發(fā)展很快,請(qǐng)Oracle干活太費(fèi)錢了,于是和我密切接觸。記得新浪、網(wǎng)易、阿里巴巴、百度、騰訊等小伙伴對(duì)我都非常熱情,我很開心,他們把很多業(yè)務(wù)交給我來(lái)處理,還幫助我提升技能。
壓力山大的是阿里巴巴說(shuō)要把全部業(yè)務(wù)都交給我負(fù)責(zé),他們搞了個(gè)去IOE的行動(dòng),并且還有個(gè)剁手節(jié),我很慌啊。每年11.11號(hào)大家一起剁手,我從來(lái)沒(méi)見(jiàn)過(guò)這么多人,尤其是那些姐妹們,根本停不下來(lái),我就要不停記錄他們的訂單,我感覺(jué)我快要撐不住了,你看,她們的手都在這里:“那是2002年的第一場(chǎng)雪”,哦,記錯(cuò)了,是2012年的11.11號(hào)0點(diǎn),我算徹底崩了,休息了30分鐘才緩過(guò)來(lái)。小伙伴知道我壓力太大,撐不住,于是自己再找了中間代理商幫我分擔(dān)壓力,那時(shí)中間商很多,Vitess、Cobar、TDDL、DDS、MyCAT等等,中間商給我的活一般比較簡(jiǎn)單,每次只要拿很少的數(shù)據(jù),壓力瞬間小了很多。
「意中人」
我打小一直和MyISAM哥哥搭配,雖然很多時(shí)候都干得不錯(cuò),但是在遇到要同時(shí)干幾件事情的時(shí)候,他就力不從心,為了避免出錯(cuò),我只能讓他一件一件干,客人感覺(jué)我們效率不高,我也非常煩惱。
后來(lái)有個(gè)叫InnoDB的小伙子主動(dòng)來(lái)幫我,我太開心了,當(dāng)很多活過(guò)來(lái)的時(shí)候,我慢慢開始推薦InnoDB哥哥處理了,他確實(shí)不錯(cuò)呀,可以幾件事情同時(shí)開工,從不出錯(cuò)。我慢慢愛(ài)上他了,但是我一直放不下MyISAM,直到2010年,我攤牌了,正式和InnoDB哥哥在一起,開始新的生活,和InnoDB磨合一段時(shí)間,越來(lái)越融洽了。
到2013年,我剛滿18歲,代號(hào)升級(jí)為V5.6,InnoDB也更強(qiáng)大,效率提升了2倍,另外我還把很多運(yùn)行數(shù)據(jù)記錄在performance_schema了,遇到問(wèn)題可以很快診斷原因?,F(xiàn)在全世界的程序員都喜歡我,還有很多DBA(數(shù)據(jù)庫(kù)管理員)把我做事情的方法研究得非常透徹,持續(xù)給我改進(jìn)意見(jiàn)。我已經(jīng)不是當(dāng)年的丑小鴨了,AWS、Facebook這些土豪們也喜歡和我合作。
「獨(dú)門秘籍」
從小爸爸教了我一些獨(dú)門秘籍,我感覺(jué)自己雖然內(nèi)功不夠,但是招式很牛,初學(xué)者都非常喜歡,我給大家介紹幾招哈:
一、主備分身術(shù)
所謂分身術(shù),就是主備可以同時(shí)處理事情,這可是我的拿手絕活。
我可以瞬間變出一個(gè)分身,甚至是多個(gè)分身,當(dāng)事情很多的時(shí)候,這些分身可以一起上,那效率杠杠的。我的分身術(shù)在互聯(lián)網(wǎng)圈子太實(shí)用了,可以秒秒鐘搭起讀寫分離架構(gòu),不要太爽。
而那些老前輩的分身術(shù)比較老套,他們通常是一個(gè)人單打獨(dú)斗,偶爾也培養(yǎng)個(gè)分身,在自己扛不住時(shí)候換分身頂上,平時(shí)分身都是在一旁看著。后來(lái)他們也學(xué)習(xí)我的分身術(shù),但總感覺(jué)是照貓畫虎,哈哈。
不過(guò)Oracle那個(gè)老家伙功力深厚,有本RAC秘籍,說(shuō)非常牛,我一直沒(méi)有學(xué)會(huì)。
二、秀外慧中掌(SHOW)
在我這里,可以用SHOW方法查看很多內(nèi)部資料,如分身、庫(kù)、表、視圖、函數(shù)、用戶、幫助,啥都可以SHOW出來(lái),一展芳容啊。DBA們特別喜歡這些招術(shù)。
show slave status; # 查看分身(備庫(kù))狀態(tài)
show processlist; #查看當(dāng)前連接信息,可以看到當(dāng)前誰(shuí)在訪問(wèn)我,還可以看到當(dāng)前運(yùn)行的慢SQL了
show databases; #查看數(shù)據(jù)庫(kù)列表
show tables; #查看表列表
show create table t1; #查看表定義
show grants for user1; #查看用戶有哪些權(quán)限
show engine innodb status; #查看innodb運(yùn)行細(xì)節(jié),什么死鎖、內(nèi)存信息都在這里了
而老前輩們總是把自己那點(diǎn)東西藏著掖著,根本沒(méi)這項(xiàng)技能。
三、翻頁(yè)神器
大家搜索信息的時(shí)候,經(jīng)常會(huì)如下翻頁(yè)顯示
我的翻頁(yè)神器就是專門干這個(gè)事情,非常厲害,看招:
#MySQL使用limit的分頁(yè)語(yǔ)法,查看從第90條開始的10條數(shù)據(jù)
select * from user
order by name limit 90,10
那些老家伙是下面的打法,實(shí)在是丟人,三招打完,感覺(jué)還是云里霧里:
#Oracle使用rownum分頁(yè)語(yǔ)法
select *
from(
select rownum as rn,
a.*
from user a
order by name
where rownum<100
)
where rn>90
后來(lái)SQL標(biāo)準(zhǔn)組織老大爺們搞了個(gè)新的分頁(yè)語(yǔ)法,如下是做的樣板,你看懂了嗎,反正我看了后感覺(jué)要頭暈,記不住啊。
分頁(yè)語(yǔ)法
好了,我的獨(dú)門秘籍還有很多很多,以后再娓娓道來(lái),接下來(lái)講講我的幾次重大變故。
「嫁入豪門/背井離鄉(xiāng)」
我家本來(lái)在瑞典的MySQL AB,在美國(guó)也有一些伙伴。2008年,美國(guó)硅谷有個(gè)叫SUN的土豪盯上我們家,說(shuō)要給我們10億美金發(fā)展,家人們沒(méi)有經(jīng)得住誘惑,于是我們就搬到SUN的地方。SUN家大業(yè)大,他們老大叫SPARC(一種精簡(jiǎn)指令集CPU架構(gòu),和Intel是對(duì)頭),老二叫Solaris(一種UNIX操作系統(tǒng),老古董了),還有只賺吆喝不賺錢的Java,雖然家大業(yè)大,但總感覺(jué)是虛胖,不是一般的虛胖。很快,到2009年,大土豪Oracle前輩用74億美金把SUN買了,我的天啊,我在SUN家人還沒(méi)認(rèn)全,又要搬家了。
到了Oracle后,我終于和InnoDB哥哥團(tuán)聚了,InnoDB在2005年就搬到Oracle家,一直和我眉來(lái)眼去,這次算是有情人終成眷屬(其實(shí)我之前還有個(gè)初戀BerkeryDB也在Oracle家,不過(guò)那都是過(guò)去的事了)。
難過(guò)的是我爸爸Monty,他是開源斗士,非常不喜歡Oracle,和我們分道揚(yáng)鑣。他自己回到芬蘭,培養(yǎng)我妹妹MariaDB,其實(shí)到SUN家的時(shí)候,爸爸就感覺(jué)不可能和我永遠(yuǎn)在一起,開始花時(shí)間在MariaDB上??矗旅媸俏医忝脗z的靚照,MariaDB妹妹和我是不是很像啊。
MySQL、MariaDB
爸爸希望我不要在Oracle家里受欺負(fù),如果Oracle不要我了,我還可以和MariaDB住到一起?,F(xiàn)在MariaDB也自己出來(lái)工作了,有時(shí)我們還會(huì)PK下,但是我更希望她快快長(zhǎng)大。爸爸年過(guò)花甲,最近又去中國(guó)見(jiàn)老朋友了,還說(shuō)要陪妹妹工作到100歲,祝福他老人家,越活越年輕。
我一直在鉆研分身術(shù),很早的時(shí)候分身只會(huì)模仿我的口令行事(Statement模式)。到2008年(V5.1)的時(shí)候,我把法術(shù)細(xì)節(jié)(Row模式)傳送給她,她就可以自己靈活發(fā)揮了。 到2015年,那年我20歲,我也升級(jí)到了V5.7,分身更厲害了,以前分身在我非常忙的時(shí)候,她有點(diǎn)跟不上,現(xiàn)在我們信息可以并發(fā)同步,她已經(jīng)完全跟上我的節(jié)奏。那時(shí)業(yè)界還流行了JSON(把XML打趴下的),于是我也悄悄的學(xué)會(huì)JSON,還有那個(gè)地理空間技術(shù),都是在我20歲練成的。另外InnoDB也修煉了動(dòng)態(tài)調(diào)整內(nèi)存技能,對(duì)內(nèi)存使用可以像孫悟空的金箍棒一樣,說(shuō)大就大,說(shuō)小就小。
Oracle一直在給我醞釀V5.8的代號(hào),都要昭告天下了,我感覺(jué)自己進(jìn)步很大,V8更符合我的氣質(zhì)提升,于是2018年,我決定從V5.7搖身變?yōu)閂8.0代號(hào)。MyISAM哥哥實(shí)在對(duì)不住啊,我感覺(jué)要徹底離開你了,V8的我已經(jīng)和InnoDB全面融合,我的機(jī)密小倉(cāng)庫(kù)(元數(shù)據(jù))都是InnoDB的了。我還學(xué)會(huì)了窗口函數(shù)、CTE語(yǔ)法,可以說(shuō)在數(shù)據(jù)分析和復(fù)雜SQL處理方面如虎添翼。我正在修煉Hash Join(一種比較高級(jí)的算法,前輩們都非常熟練),不過(guò)還是初學(xué)階段,大家見(jiàn)笑了。
「名人煩惱」
因?yàn)槲以跇I(yè)界小有名氣,據(jù)探子回報(bào),有31位江湖新秀在修煉我的招式,OceanBase、TiDB、TDSQL、SequoiaDB、ShardingSphere、Vitess、HotDB,另外還有AWS的Aurora、阿里云PolarDB、華為云GaussDB等等,他們都說(shuō)比我強(qiáng)大,學(xué)會(huì)了分布式和云原生的武功秘籍,另外還在修煉HTAP神功。我的天啊,我比較怕怕,更不知道如何還擊,但是“我還是我,不一樣的煙火”。
我對(duì)大數(shù)據(jù)處理不太擅長(zhǎng),不過(guò)有些新人這方面天賦異稟。比如最近有個(gè)俄羅斯出生的ClickHouse小朋友很出名,他也模仿了我的一些招式,我挺看好他的。中國(guó)還有個(gè)叫Doris的小弟弟也從我這里學(xué)了一招半式,據(jù)說(shuō)拽得不行。我們自家剛出生了個(gè)HeatWave的弟弟,也有數(shù)據(jù)分析的天賦,不過(guò)他很少出門,一直住在我家云里面,現(xiàn)在家里人都圍著他轉(zhuǎn),希望他快點(diǎn)長(zhǎng)大。
我也不知道未來(lái)會(huì)怎么樣,那些NoSQL的同行總在挑釁我,包括MongoDB、Redis、Nebula Graph、TDengine等等。最近10年大家都開始搬到云上生活,感覺(jué)在Oracle這里很分裂,我們家那朵云好像不溫不火。最早家里不讓我住到云上,反而AWS、阿里云他們把我當(dāng)頭牌,早早把云上天之一號(hào)房間給我,我也給他們賺了上百億現(xiàn)金,真是投桃報(bào)李啊。我是墻里開花墻外香,你懂的。
其實(shí)我到Oracle家一直都不太受待見(jiàn),感覺(jué)像個(gè)小妾,擔(dān)心我搶正房的風(fēng)頭,外界總謠傳Oracle買我只是為了得到我。InnoDB哥哥一直在鼓勵(lì)我活著,我們也是互相依靠了,畢竟如果我沒(méi)了,他肯定也活不下去。我雖然一直在升級(jí),但也不知道V9啥時(shí)候發(fā)布,因?yàn)楝F(xiàn)在大家都在上云,所以我的核心任務(wù)也是在云上站穩(wěn)腳跟,其他事情都顧不上了。
我還有個(gè)叫大象(PostgreSQL)的死對(duì)頭,其實(shí)她是70后,叫她大姐估計(jì)會(huì)拿刀砍我。她在十幾歲的時(shí)候家里發(fā)生了一些變故,后來(lái)迷上了面向?qū)ο蟮姆ㄐg(shù),以為那是絕世神功,最后沒(méi)練成,不了了之,還留下了一堆廢鐵,現(xiàn)在算是回歸正道。她是大學(xué)老師的好學(xué)生,學(xué)霸類型,什么都懂,號(hào)稱最強(qiáng)大的開源數(shù)據(jù)庫(kù)。我感覺(jué)懂是懂,但真正干起來(lái)沒(méi)有我靠譜,所以我也就不和她計(jì)較了。不過(guò)她比我還開放,有很多朋友,近幾年也進(jìn)步神速,中國(guó)還有個(gè)openGauss兄弟和她很好,也許會(huì)青出于藍(lán)勝于藍(lán),我還是要當(dāng)心點(diǎn)。
輪到我做核酸了,今天就和大家聊到這里啊,下次空了再叨叨。我現(xiàn)在家里地位急待提升啊,如果你在使用MySQL,記得幫我點(diǎn)贊和轉(zhuǎn)發(fā)哈,我家還有幾件珍藏的MySQL練功內(nèi)衣可以送出。
審核編輯 黃昊宇
-
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3838瀏覽量
64541 -
MySQL
+關(guān)注
關(guān)注
1文章
819瀏覽量
26647
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論