<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 1228字,需瀏覽 3分鐘

           ·

          2021-04-27 14:40

          為何稱MySQL為黑盒?

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

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

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

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

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

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

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

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

          2. 復(fù)制代碼 

          需要借助組件 查詢解析器 對(duì)sql語句進(jìn)行解析和拆解,拆解成以下幾部分:

          1. from users: 我們需要從 users 表里面查詢數(shù)據(jù)

          2. where id = 1 :查詢id字段值為1的那行數(shù)據(jù)

          3. select id, name, age : 從查出來的那行數(shù)據(jù)中提取出 "id,name,age"三個(gè)字段

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

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

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

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

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

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


          總結(jié):

          在MySQL架構(gòu)設(shè)計(jì)中,SQL接口、SQL解析器、查詢優(yōu)化器、執(zhí)行器都是一套通用的組件,但是存儲(chǔ)引擎卻有不同的選擇,例如:InnoDB、MyISAM、Memory等,對(duì)應(yīng)不同的應(yīng)用場(chǎng)景,MySQL的默認(rèn)是 InnoDB,在后續(xù)會(huì)一步一步分析。所以綜上所述,MySQL的執(zhí)行sql語句的順序?yàn)椋簊ql接口->解析器:解釋sql->優(yōu)化器:生成執(zhí)行計(jì)劃->執(zhí)行器:執(zhí)行計(jì)劃去調(diào)用InnoDB存儲(chǔ)引擎接口執(zhí)行sql


          Java幫幫

          非盈利學(xué)習(xí)社區(qū)

          官網(wǎng):www.javahelp.com.cn


          職業(yè)司

          職業(yè)司學(xué)習(xí)交流互動(dòng)開放社區(qū)

          官網(wǎng):zhiyesi.com


          瀏覽 54
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  超碰人妻人人操 | 久久夜色精品国产噜噜亚洲AV | 久操影视 | 操逼视频黄色 | 国产乱╳╳╳╳性视频大全 |