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

一文搞懂MySQL運行機制原理

 更新時間:2022年09月30日 08:35:30   作者:1個俗人???????  
這篇文章主要介紹了一文搞懂MySQL運行機制原理,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

前言

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

MySQL服務器體系架構

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

網(wǎng)絡連接層

客戶端連接器:提供與MySQL服務器建立的支持。

服務層

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

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

存儲引擎層

負責MySQL中數(shù)據(jù)的存儲與提取,與底層系統(tǒng)文件進行交互,可插拔,常見的兩類:MyISAM和InnoDB。

系統(tǒng)文件層

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

服務器處理客戶端請求

客戶端可以向服務器發(fā)送增刪改查等各類請求,我們來看一下服務器是如何處理客戶端發(fā)送的請求。

連接管理

客戶端與服務器進程建立連接,每當有一個客戶端進程連接到服務器進程時,服務器進程都會創(chuàng)建一個線程來專門處理與這個客戶端的交互,當該客戶端退出時會與服務器斷開連接,服務器會把線程緩存起來。

解析與優(yōu)化

查詢緩存

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

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

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

語法解析

如果查詢緩存沒有命中,就進入查詢階段,服務器先對文本做分析,判斷語法是否正確,然后從文本中將要查詢的表、各種查詢條件都提取出來放到內部使用的一些數(shù)據(jù)結構上。

算是一個編譯過程,涉及詞法解析、語法分析、語義分析等階段。

查詢優(yōu)化

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

我們可以使用Explain來查看某個語句的執(zhí)行計劃。

存儲引擎

完成查詢優(yōu)化之后還沒有真正去訪問真實的數(shù)據(jù)表,數(shù)據(jù)的存儲和提取操作都封裝到了這個模塊里。不同存儲引擎管理的表具體的存儲結構可能不同,采用存取算法也可能不同。

小結

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

  • 客戶端先發(fā)送查詢語句給服務器
  • 服務器檢查緩存,如果存在則返回
  • 進行sql解析,生成解析樹,再預處理,生成第二個解析樹,最后再經(jīng)過優(yōu)化器,生成真正的執(zhí)行計劃
  • 根據(jù)執(zhí)行計劃,調用存儲引擎的API來執(zhí)行查詢
  • 將結果返回給客戶端。

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

相關文章

  • Java連接MySql的詳細介紹

    Java連接MySql的詳細介紹

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

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

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

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

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

    MySQL服務無法啟動:failed to restart mysql.service:&

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

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

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

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

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

    Mysql使用存儲過程快速添加百萬數(shù)據(jù)的示例代碼

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

    centos7下安裝mysql全過程

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

    64位CentOs7源碼安裝mysql-5.6.35過程分享

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

    MySQL中的隨機抽取的實現(xiàn)

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

最新評論

浦城县| 永川市| 富民县| 广汉市| 武冈市| 汶上县| 宁乡县| 双流县| 盐边县| 德保县| 陆良县| 涡阳县| 庐江县| 卢氏县| 鄢陵县| 托克逊县| 永兴县| 彝良县| 平利县| 那曲县| 仁怀市| 襄樊市| 绍兴市| 鄂温| 安康市| 横峰县| 邮箱| 武定县| 德安县| 涞源县| 新疆| 寻乌县| 陆河县| 静乐县| 河源市| 宣威市| 武安市| 陆川县| 都安| 白城市| 镇平县|