MySQL架構(gòu)設(shè)計--服務(wù)層

MySQL驅(qū)動到底是什么東西

我們?nèi)绻贘ava系統(tǒng)中去訪問一個MySQL數(shù)據(jù)庫,必須得在系統(tǒng)的依賴中加入一個MySQL驅(qū)動骂租,有了這個MySQL驅(qū)動才能跟MySQL數(shù)據(jù)庫建立連接躲惰,然后執(zhí)行各種各樣的SQL語句奸焙。

他會在底層跟數(shù)據(jù)庫建立網(wǎng)絡(luò)連接嫌术,有網(wǎng)絡(luò)連接烫扼,接著才能去發(fā)送請求給數(shù)據(jù)庫服務(wù)器曙求!

MySQL數(shù)據(jù)庫的連接池是用來干什么的

多個線程并發(fā)處理多個請求的時候,都要去搶奪一個連接去訪問數(shù)據(jù)庫的話映企,那效率肯定是很低下的悟狱,所以一般我們必須要使用一個數(shù)據(jù)庫連接池,也就是說在一個池子里維持多個數(shù)據(jù)庫連接堰氓,讓多個線程使用里面的不同的數(shù)據(jù)庫連接去 執(zhí)行SQL語句挤渐,然后執(zhí)行完SQL語句之后,不要銷毀這個數(shù)據(jù)庫連接双絮,而是把連接放回池子里浴麻,后續(xù)還可以繼續(xù)使用。

基于這樣的一個數(shù)據(jù)庫連接池的機制囤攀,就可以解決多個線程并發(fā)的使用多個數(shù)據(jù)庫連接去執(zhí)行SQL語句的問題软免,而且還避免了數(shù)據(jù)庫連 接使用完之后就銷毀的問題。

實際上MySQL中的連接池就是維護了與系統(tǒng)之間的多個數(shù)據(jù)庫連接抚岗。除此之外或杠,你的系統(tǒng)每次跟MySQL建立連接的 時候,還會根據(jù)你傳遞過來的賬號和密碼宣蔚,進行賬號密碼的驗證向抢,庫表權(quán)限的驗證。


SQL接口:負責(zé)處理接收到的SQL語句

MySQL內(nèi)部首先提供了一個組件胚委,就是SQL接口(SQL Interface)挟鸠,他是一套執(zhí)行SQL語句的接口,專門用于執(zhí)行我們 發(fā)送給MySQL的那些增刪改查的SQL語句 亩冬。

因此MySQL的工作線程接收到SQL語句之后艘希,就會轉(zhuǎn)交給SQL接口去執(zhí)行。

查詢解析器:讓MySQL能看懂sql語句

這個查詢解析器(Parser)就是負責(zé)對SQL語句進行解析的硅急,所謂的SQL解析覆享,就是按照既定的SQL語法,對我們按照SQL語法規(guī)則編寫的SQL語句進行解析营袜,然后理解這個SQL語句要干什么事情撒顿。

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

當我們通過解析器理解了SQL語句要干什么之后,接著會找查詢優(yōu)化器(Optimizer)來選擇一個最優(yōu)的查詢路徑荚板。

這個看起來確實很抽象凤壁,我們可以用一個極為通俗簡單的例子吩屹,讓大家理解一下所謂的最優(yōu)查詢路徑是什么。

例如:select id,name,age from user where id=1;

直接定位到“users”表中的“id”字段等于1的一行數(shù)據(jù)拧抖,然后查出來那行數(shù)據(jù)“id,name,age”三個字段的值就可以了

先把“users”表中的每一行數(shù)據(jù)的“id,name,age”三個字段的值都查出來煤搜,然后從這批數(shù)據(jù)里過濾出來“id”字段等于1的那行數(shù)據(jù)的“id,name,age”三個字段

上面這就是一個最簡單的SQL語句的兩種實現(xiàn)路徑,其實我們會發(fā)現(xiàn)唧席,要完成這個SQL語句的目標擦盾,兩個路徑都可以做到,但是哪一種更好呢袱吆?顯然感覺上是第一種查詢路徑更好一些厌衙。

所以查詢優(yōu)化器大概就是干這個的距淫,他會針對你編寫的幾十行绞绒、幾百行甚至上千行的復(fù)雜SQL語句生成查詢路徑樹,然后從里面選擇一條最優(yōu)的查詢路徑出來榕暇。

相當于他會告訴你蓬衡,你應(yīng)該按照一個什么樣的步驟和順序,去執(zhí)行哪些操作彤枢,然后一步一步的把SQL語句就給完成了狰晚。

執(zhí)行器:根據(jù)執(zhí)行計劃調(diào)用存儲引擎的接口

執(zhí)行器就會去根據(jù)我們的優(yōu)化器生成的一套執(zhí)行計劃,然后不停的調(diào)用存儲引擎的各種接口去完成SQL 語句的執(zhí)行計劃缴啡,大致就是不停的更新或者提取一些數(shù)據(jù)出來壁晒。

調(diào)用存儲引擎接口,真正執(zhí)行SQL語句

我們已經(jīng)知道一個SQL語句要如何執(zhí)行了业栅,但是我們現(xiàn)在怎么知道哪些數(shù)據(jù)在內(nèi)存里秒咐?哪些數(shù)據(jù)在磁盤里?我們執(zhí)行的時候是更新內(nèi)存的數(shù)據(jù)碘裕?還是更新磁盤的數(shù)據(jù)携取?我們?nèi)绻麓疟P的數(shù)據(jù),是先查詢哪個磁盤文件帮孔,再更新哪個磁盤文件雷滋?

這個時候就需要存儲引擎了,存儲引擎其實就是執(zhí)行SQL語句的文兢,他會按照一定的步驟去查詢內(nèi)存緩存數(shù)據(jù)晤斩,更新磁盤數(shù)據(jù),查詢磁盤數(shù)據(jù)姆坚,等等澳泵,執(zhí)行諸如此類的一系列的操作

MySQL的架構(gòu)設(shè)計中,SQL接口旷偿、SQL解析器烹俗、查詢優(yōu)化器其實都是通用的爆侣,他就是一套組件而已。

但是存儲引擎的話幢妄,他是支持各種各樣的存儲引擎的兔仰,比如我們常見的InnoDB、MyISAM蕉鸳、Memory等等乎赴,我們是可以選擇使用哪種存儲引擎來負責(zé)具體的SQL語句執(zhí)行的。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末潮尝,一起剝皮案震驚了整個濱河市榕吼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌勉失,老刑警劉巖羹蚣,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異乱凿,居然都是意外死亡顽素,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門徒蟆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胁出,“玉大人,你說我怎么就攤上這事段审∪” “怎么了?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵寺枉,是天一觀的道長抑淫。 經(jīng)常有香客問我,道長型凳,這世上最難降的妖魔是什么丈冬? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮甘畅,結(jié)果婚禮上埂蕊,老公的妹妹穿的比我還像新娘。我一直安慰自己疏唾,他們只是感情好蓄氧,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著槐脏,像睡著了一般喉童。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顿天,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天堂氯,我揣著相機與錄音蔑担,去河邊找鬼。 笑死咽白,一個胖子當著我的面吹牛啤握,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播晶框,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼排抬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了授段?” 一聲冷哼從身側(cè)響起蹲蒲,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侵贵,沒想到半個月后届搁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡模燥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年咖祭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔫骂。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖牺汤,靈堂內(nèi)的尸體忽然破棺而出辽旋,到底是詐尸還是另有隱情,我是刑警寧澤檐迟,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布补胚,位于F島的核電站,受9級特大地震影響追迟,放射性物質(zhì)發(fā)生泄漏溶其。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一敦间、第九天 我趴在偏房一處隱蔽的房頂上張望瓶逃。 院中可真熱鬧,春花似錦廓块、人聲如沸厢绝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昔汉。三九已至,卻和暖如春拴清,著一層夾襖步出監(jiān)牢的瞬間靶病,已是汗流浹背会通。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留娄周,地道東北人渴语。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像昆咽,于是被迫代替她去往敵國和親驾凶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

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