剖析MySQL黑盒----MySQL架構(gòu)設(shè)計

為何稱MySQL為黑盒?

對于大部分的開發(fā)人員而言拣展,編寫增刪查改的sql語句通過數(shù)據(jù)庫連接去操作數(shù)據(jù)庫悼尾,但并不關(guān)心數(shù)據(jù)庫是如何監(jiān)聽請求和從連接中把請求數(shù)據(jù)中提取出來廉侧,往往在意表結(jié)構(gòu),sql執(zhí)行效率慢就給他們建立索引啤握,完全把MySQL當(dāng)作黑盒子去使用鸟缕。

1. 網(wǎng)絡(luò)連接必須使用線程來處理

MySQL 使用內(nèi)部線程來實現(xiàn)監(jiān)聽和讀取請求。

圖 1

2. SQL接口:負(fù)責(zé)處理接收到的sql語句

MySQL通過sql接口把我們平時編寫的sql語句簡單化排抬,讓我們輕松的學(xué)會和編寫sql語句懂从,但其底層實現(xiàn)其實是非常復(fù)雜。當(dāng)工作線程接收到sql語句之后畜埋,會交給sql接口去執(zhí)行莫绣。

圖 2

3. 查詢解釋器:讓MySQL看懂sql語句

MySQL是一個數(shù)據(jù)管理系統(tǒng),并不能像我們一樣直接讀懂sql語句悠鞍,例如:

select id, name, age from users where id = 1

需要借助組件 查詢解析器 對sql語句進行解析和拆解对室,拆解成以下幾部分:

  1. from users: 我們需要從 users 表里面查詢數(shù)據(jù)
  2. where id = 1 :查詢id字段值為1的那行數(shù)據(jù)
  3. select id, name, age : 從查出來的那行數(shù)據(jù)中提取出 "id,name,age"三個字段
圖 3

4. 查詢優(yōu)化器:選擇最優(yōu)的查詢路徑

查詢優(yōu)化器會根據(jù)sql生成查詢路徑樹,然后從里面選擇一條最優(yōu)的查詢路徑出來咖祭。

圖 4

5. 調(diào)用存儲引擎接口掩宜,真正執(zhí)行sql語句

數(shù)據(jù)庫存儲的數(shù)據(jù),有可能存儲在磁盤上么翰,有可能存儲在內(nèi)存中牺汤。那怎么判別查詢的數(shù)據(jù)存放在哪一個地方?存儲引擎根據(jù)執(zhí)行器的調(diào)度執(zhí)行sql邏輯浩嫌,無論是從內(nèi)存緩存中查詢數(shù)據(jù)檐迟,從磁盤中更新數(shù)據(jù)补胚,一系列操作全都由存儲引擎執(zhí)行。

圖 5

6. 執(zhí)行器:根據(jù)執(zhí)行計劃調(diào)度存儲引擎

執(zhí)行器根據(jù)優(yōu)化器的執(zhí)行計劃去調(diào)用存儲引擎的各種接口來完成sql語句的執(zhí)行追迟。

圖 6

總結(jié):

在MySQL架構(gòu)設(shè)計中溶其,SQL接口、SQL解析器敦间、查詢優(yōu)化器瓶逃、執(zhí)行器都是一套通用的組件,但是存儲引擎卻有不同的選擇廓块,例如:InnoDB厢绝、MyISAM、Memory等带猴,對應(yīng)不同的應(yīng)用場景昔汉,MySQL的默認(rèn)是 InnoDB,在后續(xù)會一步一步分析拴清。
所以綜上所述挤庇,MySQL的執(zhí)行sql語句的順序為:
sql接口->解析器:解釋sql->優(yōu)化器:生成執(zhí)行計劃->執(zhí)行器:執(zhí)行計劃去調(diào)用InnoDB存儲引擎接口執(zhí)行sql

注明:

學(xué)習(xí)筆記總結(jié)于公棕號:儒猿技術(shù)窩。感興趣的同學(xué)可以前往關(guān)注贷掖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載嫡秕,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末苹威,一起剝皮案震驚了整個濱河市昆咽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌牙甫,老刑警劉巖掷酗,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異窟哺,居然都是意外死亡泻轰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門且轨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浮声,“玉大人,你說我怎么就攤上這事旋奢∮净樱” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵至朗,是天一觀的道長屉符。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么矗钟? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任唆香,我火速辦了婚禮,結(jié)果婚禮上吨艇,老公的妹妹穿的比我還像新娘袋马。我一直安慰自己,他們只是感情好秸应,可當(dāng)我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碑宴,像睡著了一般软啼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上延柠,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天祸挪,我揣著相機與錄音,去河邊找鬼贞间。 笑死贿条,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的增热。 我是一名探鬼主播整以,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼峻仇!你這毒婦竟也來了公黑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤摄咆,失蹤者是張志新(化名)和其女友劉穎凡蚜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吭从,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡朝蜘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了涩金。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谱醇。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖步做,靈堂內(nèi)的尸體忽然破棺而出枣抱,到底是詐尸還是另有隱情,我是刑警寧澤辆床,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布佳晶,位于F島的核電站,受9級特大地震影響讼载,放射性物質(zhì)發(fā)生泄漏轿秧。R本人自食惡果不足惜中跌,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望菇篡。 院中可真熱鬧漩符,春花似錦、人聲如沸驱还。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽议蟆。三九已至闷沥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咐容,已是汗流浹背舆逃。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留戳粒,地道東北人路狮。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像蔚约,于是被迫代替她去往敵國和親奄妨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容