<p id="rrtt5"></p><ruby id="rrtt5"></ruby>

      系統城裝機大師 - 固鎮縣祥瑞電腦科技銷售部宣傳站!

      當前位置:首頁 > 數據庫 > Mysql > 詳細頁面

      一文搞懂MySQL運行機制原理

      時間:2022-10-02來源:www.1999hs.com作者:電腦系統城

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

      MySQL服務器體系架構

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

      網絡連接層

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

      服務層

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

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

      存儲引擎層

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

      系統文件層

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

      服務器處理客戶端請求

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

      連接管理

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

      解析與優化

      查詢緩存

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

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

      PS:8.0中查詢緩存已經刪除了

      語法解析

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

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

      查詢優化

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

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

      存儲引擎

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

      小結

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

      • 客戶端先發送查詢語句給服務器
      • 服務器檢查緩存,如果存在則返回
      • 進行sql解析,生成解析樹,再預處理,生成第二個解析樹,最后再經過優化器,生成真正的執行計劃
      • 根據執行計劃,調用存儲引擎的API來執行查詢
      • 將結果返回給客戶端。
      分享到:

      相關信息

      系統教程欄目

      欄目熱門教程

      人氣教程排行

      站長推薦

      熱門系統下載

      天堂资源中文WWW,久久精品女人天堂AV免费观看,无码专区一ⅤA亚洲V天堂,免费观看在线AⅤ天堂视频