時間:2022-10-02來源:www.ship-models.net作者:電腦系統城
前文我們了解了MySQL采用客戶端/服務器架構,用戶通過客戶端程序發送增刪改查需求,服務器程序收到請求后處理,并且把處理結果返回給客戶端。這篇文章主要看下MySQL服務端是如何處理客戶端的請求,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
MySQL Server架構自頂向下大致可以分網絡連接層、服務層、存儲引擎層和系統文件層。
客戶端連接器:提供與MySQL服務器建立的支持。
主要包含系統管理和控制工具、連接池、SQL接口、解析器、查詢優化器和緩存六個部分。
負責MySQL中數據的存儲與提取,與底層系統文件進行交互,可插拔,常見的兩類:MyISAM和InnoDB。
負責將數據庫的數據和日志存儲在文件系統之上,并完成與存儲引擎的交互,比如日志、配置文件等等。
客戶端可以向服務器發送增刪改查等各類請求,我們來看一下服務器是如何處理客戶端發送的請求。
連接管理
客戶端與服務器進程建立連接,每當有一個客戶端進程連接到服務器進程時,服務器進程都會創建一個線程來專門處理與這個客戶端的交互,當該客戶端退出時會與服務器斷開連接,服務器會把線程緩存起來。
如果兩個查詢請求在任何字符上的不同都會導致緩存不命中。請求中包含某些系統函數、用戶自定義變量和函數、一些系統表也不會被緩存。
只要該表的結構或者數據被修改,則該表的所有高速緩存查詢都將無效并刪除。
PS:8.0中查詢緩存已經刪除了
如果查詢緩存沒有命中,就進入查詢階段,服務器先對文本做分析,判斷語法是否正確,然后從文本中將要查詢的表、各種查詢條件都提取出來放到內部使用的一些數據結構上。
算是一個編譯過程,涉及詞法解析、語法分析、語義分析等階段。
對SQL做優化,生成一個執行計劃,表明了應該使用哪些索引進行查詢,表之間的連接順序是怎樣的。
我們可以使用Explain來查看某個語句的執行計劃。
完成查詢優化之后還沒有真正去訪問真實的數據表,數據的存儲和提取操作都封裝到了這個模塊里。不同存儲引擎管理的表具體的存儲結構可能不同,采用存取算法也可能不同。
MySQL Server架構自頂向下大致可以分網絡連接層、服務層、存儲引擎層和系統文件層。mysql執行查詢的過程如下:
2022-10-24
安裝MYSQL端口被占用2022-10-02
mysql8.0主從復制搭建與配置方案2022-10-02
詳解MySQL客戶端/服務器運行架構通配符是一種特殊語句,主要用來模糊查詢,下面這篇文章主要給大家介紹了關于給Mysql實現模糊查詢的兩種方式,分別是like子句 、正則表達式,需要的朋友可以參考下...
2022-10-02