一:體系結構
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLyEzMzUjM5EDMx0iM1IzMzQjMzETMwYDMwIDMy0CMygjM1QTMvwlNwAjMwIzLcBjM4ITN0EzLcd2bsJ2Lc12bj5ycn9Gbi52YuAjMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
mysql服務和用戶端的通信是半雙工的
(1) Connectors:不同語言中與SQL的互動
(2)Management Serveices & Utilities: 系統管理和控制工具,例如備份恢複、Mysql複制、叢集等
(3)Connection Pool: 連接配接池(管理緩沖使用者連接配接、使用者名、密碼、權限校驗、線程處理等需要緩存的需求)
(4)SQL Interface: SQL接口:接受使用者的SQL指令,并且傳回使用者需要查詢的結果。比如select from就是調用SQL Interface
(5)Parser: 解析器,SQL指令傳遞到解析器的時候會被解析器驗證和解析。
(6)Optimizer: 查詢優化器,SQL語句在查詢之前會使用查詢優化器對查詢進行優化。
(7) Cache和Buffer(高速緩存區): 查詢緩存,如果查詢緩存有命中的查詢結果,查詢語句就可以直接去查詢緩存中取資料。 通過LRU算法将資料的冷端溢出,未來得及時重新整理到磁盤的資料頁,叫髒頁。
(8)Engine :存儲引擎。存儲引擎是MySql中具體的與檔案打交道的子系統。Mysql的存儲引擎是插拔式的。它根據MySql公司提供的檔案通路層的一個抽象接口來定制一種檔案通路機制(這種通路機制就叫存儲引擎) 。
2.sql的執行順序
1、用戶端發送一條查詢給伺服器
2、伺服器先檢查查詢緩存,如果命中緩存,則立刻傳回存儲在緩存中的結果。
3、伺服器端進行SQL解析、預處理,再由優化器生成對應的執行計劃。
4、MySQL根據優化器生成的執行計劃,調用存儲引擎的API執行查詢。
5、傳回結果給用戶端