最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文搞懂MySQL運(yùn)行機(jī)制原理

 更新時(shí)間:2022年09月30日 08:35:30   作者:1個(gè)俗人???????  
這篇文章主要介紹了一文搞懂MySQL運(yùn)行機(jī)制原理,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

前言

前文我們了解了MySQL采用客戶(hù)端/服務(wù)器架構(gòu),用戶(hù)通過(guò)客戶(hù)端程序發(fā)送增刪改查需求,服務(wù)器程序收到請(qǐng)求后處理,并且把處理結(jié)果返回給客戶(hù)端。這篇文章主要看下MySQL服務(wù)端是如何處理客戶(hù)端的請(qǐng)求,感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

MySQL服務(wù)器體系架構(gòu)

MySQL Server架構(gòu)自頂向下大致可以分網(wǎng)絡(luò)連接層、服務(wù)層、存儲(chǔ)引擎層和系統(tǒng)文件層。

網(wǎng)絡(luò)連接層

客戶(hù)端連接器:提供與MySQL服務(wù)器建立的支持。

服務(wù)層

主要包含系統(tǒng)管理和控制工具、連接池、SQL接口、解析器、查詢(xún)優(yōu)化器和緩存六個(gè)部分。

  • 1) 連接池:存儲(chǔ)和管理客戶(hù)端與數(shù)據(jù)庫(kù)的連接。
  • 2) 系統(tǒng)管理和控制工具:集群、備份、安全管理。
  • 3) SQL接口:接受客戶(hù)端發(fā)送的各種SQL命令并返回查詢(xún)結(jié)果。
  • 4) 解析器:解析SQL,生成一顆解析樹(shù),驗(yàn)證SQL是否合法。
  • 5) 查詢(xún)優(yōu)化器:將解析樹(shù)轉(zhuǎn)化成執(zhí)行計(jì)劃,與存儲(chǔ)引擎進(jìn)行交互。
  • 6) 緩存:各種緩存,比如表、記錄、權(quán)限等等,緩存有命中查詢(xún)結(jié)果直接返回。

存儲(chǔ)引擎層

負(fù)責(zé)MySQL中數(shù)據(jù)的存儲(chǔ)與提取,與底層系統(tǒng)文件進(jìn)行交互,可插拔,常見(jiàn)的兩類(lèi):MyISAM和InnoDB。

系統(tǒng)文件層

負(fù)責(zé)將數(shù)據(jù)庫(kù)的數(shù)據(jù)和日志存儲(chǔ)在文件系統(tǒng)之上,并完成與存儲(chǔ)引擎的交互,比如日志、配置文件等等。

服務(wù)器處理客戶(hù)端請(qǐng)求

客戶(hù)端可以向服務(wù)器發(fā)送增刪改查等各類(lèi)請(qǐng)求,我們來(lái)看一下服務(wù)器是如何處理客戶(hù)端發(fā)送的請(qǐng)求。

連接管理

客戶(hù)端與服務(wù)器進(jìn)程建立連接,每當(dāng)有一個(gè)客戶(hù)端進(jìn)程連接到服務(wù)器進(jìn)程時(shí),服務(wù)器進(jìn)程都會(huì)創(chuàng)建一個(gè)線(xiàn)程來(lái)專(zhuān)門(mén)處理與這個(gè)客戶(hù)端的交互,當(dāng)該客戶(hù)端退出時(shí)會(huì)與服務(wù)器斷開(kāi)連接,服務(wù)器會(huì)把線(xiàn)程緩存起來(lái)。

解析與優(yōu)化

查詢(xún)緩存

如果兩個(gè)查詢(xún)請(qǐng)求在任何字符上的不同都會(huì)導(dǎo)致緩存不命中。請(qǐng)求中包含某些系統(tǒng)函數(shù)、用戶(hù)自定義變量和函數(shù)、一些系統(tǒng)表也不會(huì)被緩存。

只要該表的結(jié)構(gòu)或者數(shù)據(jù)被修改,則該表的所有高速緩存查詢(xún)都將無(wú)效并刪除。

PS:8.0中查詢(xún)緩存已經(jīng)刪除了

語(yǔ)法解析

如果查詢(xún)緩存沒(méi)有命中,就進(jìn)入查詢(xún)階段,服務(wù)器先對(duì)文本做分析,判斷語(yǔ)法是否正確,然后從文本中將要查詢(xún)的表、各種查詢(xún)條件都提取出來(lái)放到內(nèi)部使用的一些數(shù)據(jù)結(jié)構(gòu)上。

算是一個(gè)編譯過(guò)程,涉及詞法解析、語(yǔ)法分析、語(yǔ)義分析等階段。

查詢(xún)優(yōu)化

對(duì)SQL做優(yōu)化,生成一個(gè)執(zhí)行計(jì)劃,表明了應(yīng)該使用哪些索引進(jìn)行查詢(xún),表之間的連接順序是怎樣的。

我們可以使用Explain來(lái)查看某個(gè)語(yǔ)句的執(zhí)行計(jì)劃。

存儲(chǔ)引擎

完成查詢(xún)優(yōu)化之后還沒(méi)有真正去訪(fǎng)問(wèn)真實(shí)的數(shù)據(jù)表,數(shù)據(jù)的存儲(chǔ)和提取操作都封裝到了這個(gè)模塊里。不同存儲(chǔ)引擎管理的表具體的存儲(chǔ)結(jié)構(gòu)可能不同,采用存取算法也可能不同。

小結(jié)

MySQL Server架構(gòu)自頂向下大致可以分網(wǎng)絡(luò)連接層、服務(wù)層、存儲(chǔ)引擎層和系統(tǒng)文件層。mysql執(zhí)行查詢(xún)的過(guò)程如下:

  • 客戶(hù)端先發(fā)送查詢(xún)語(yǔ)句給服務(wù)器
  • 服務(wù)器檢查緩存,如果存在則返回
  • 進(jìn)行sql解析,生成解析樹(shù),再預(yù)處理,生成第二個(gè)解析樹(shù),最后再經(jīng)過(guò)優(yōu)化器,生成真正的執(zhí)行計(jì)劃
  • 根據(jù)執(zhí)行計(jì)劃,調(diào)用存儲(chǔ)引擎的API來(lái)執(zhí)行查詢(xún)
  • 將結(jié)果返回給客戶(hù)端。

到此這篇關(guān)于一文搞懂MySQL運(yùn)行機(jī)制原理的文章就介紹到這了,更多相關(guān)MySQL運(yùn)行機(jī)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java連接MySql的詳細(xì)介紹

    Java連接MySql的詳細(xì)介紹

    本篇文章主要是對(duì)Java連接MySql的詳細(xì)介紹。需要的朋友參考下
    2013-04-04
  • Windows 8.1下MySQL5.7 忘記root 密碼的解決方法

    Windows 8.1下MySQL5.7 忘記root 密碼的解決方法

    最近學(xué)習(xí)碰到了一件挺令人尷尬的事情,我把MySQL的密碼給忘記了,所以MySQL登錄不進(jìn)去。在網(wǎng)上找的解決方案都不靠譜,下面小編給大家分享Windows 8.1下MySQL5.7 忘記root 密碼的解決方法,需要的朋友一起看看吧
    2017-07-07
  • mysql5.7.17壓縮包安裝配置方法圖文教程

    mysql5.7.17壓縮包安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.17壓縮包安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • MySQL服務(wù)無(wú)法啟動(dòng):failed to restart mysql.service: unit not found

    MySQL服務(wù)無(wú)法啟動(dòng):failed to restart mysql.service:&

    在系統(tǒng)更新或配置變更后,MySQL服務(wù)可能無(wú)法啟動(dòng),本文提供解決MySQL服務(wù)啟動(dòng)失敗的方法,包括檢查和更新服務(wù)單元文件,主要步驟包括檢查服務(wù)文件存在與否、備份舊的服務(wù)文件、使用最新的服務(wù)文件重啟MySQL服務(wù)等,確保服務(wù)能正常運(yùn)行,感興趣的可以了解一下
    2024-10-10
  • 使用mysqldump實(shí)現(xiàn)mysql備份

    使用mysqldump實(shí)現(xiàn)mysql備份

    mysqldump客戶(hù)端可用來(lái)轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)或搜集數(shù)據(jù)庫(kù)進(jìn)行備份或?qū)?shù)據(jù)轉(zhuǎn)移到另一個(gè)SQL服務(wù)器(不一定是一個(gè)MySQL服務(wù)器)。今天我們就來(lái)詳細(xì)探討下mysqldump的使用方法
    2016-11-11
  • mysql表分區(qū)的方式和實(shí)現(xiàn)代碼示例

    mysql表分區(qū)的方式和實(shí)現(xiàn)代碼示例

    通俗地講表分區(qū)是將一個(gè)大表,根據(jù)條件分割成若干個(gè)小表,下面這篇文章主要給大家介紹了關(guān)于mysql表分區(qū)的方式和實(shí)現(xiàn)代碼,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • Mysql使用存儲(chǔ)過(guò)程快速添加百萬(wàn)數(shù)據(jù)的示例代碼

    Mysql使用存儲(chǔ)過(guò)程快速添加百萬(wàn)數(shù)據(jù)的示例代碼

    這篇文章主要介紹了Mysql使用存儲(chǔ)過(guò)程快速添加百萬(wàn)數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • centos7下安裝mysql全過(guò)程

    centos7下安裝mysql全過(guò)程

    這篇文章主要介紹了centos7下安裝mysql全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 64位CentOs7源碼安裝mysql-5.6.35過(guò)程分享

    64位CentOs7源碼安裝mysql-5.6.35過(guò)程分享

    本文給大家分享的是在64位CentOs7系統(tǒng)中使用源碼安裝mysql-5.6.35的詳細(xì)過(guò)程,非常的細(xì)致,有需要的小伙伴可以參考下
    2017-02-02
  • MySQL中的隨機(jī)抽取的實(shí)現(xiàn)

    MySQL中的隨機(jī)抽取的實(shí)現(xiàn)

    本文主要介紹了MySQL中的隨機(jī)抽取的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評(píng)論

桑植县| 铁岭市| 张家川| 辰溪县| 文水县| 湘阴县| 于田县| 含山县| 浪卡子县| 祁阳县| 胶南市| 安顺市| 新竹市| 闸北区| 静安区| 宁河县| 肇源县| 永吉县| 奉新县| 进贤县| 永新县| 新密市| 宜章县| 乌拉特中旗| 塔城市| 苏尼特左旗| 阿巴嘎旗| 浦东新区| 东辽县| 临潭县| 宜宾县| 洪湖市| 肥城市| 杨浦区| 壤塘县| 连城县| 延吉市| 巍山| 都匀市| 堆龙德庆县| 九龙城区|