目錄
-
- 一、Sql的執行過程流程圖解
- 二、Sql的執行過程流程
-
- 1.2.1、建立連接
- 1.2.2、服務層(緩存、解析器、預處理器、優化器、執行器)
-
- 1.2.2.1、緩存
- 1.2.2.2、解析器
- 1.2.2.3、預處理器
- 1.2.2.4、優化器
- 1.2.2.5、執行器
- 1.2.3、引擎層
一、Sql的執行過程流程圖解
-
Sql的執行過程
二、Sql的執行過程流程
1.2.1、建立連接
- 當客戶端執行一條sql,跟遠程數據庫建立連接,并驗證用戶名及密碼,如果驗證通過,執行到MySql的服務層;
1.2.2、服務層(緩存、解析器、預處理器、優化器、執行器)
1.2.2.1、緩存
- MySql的服務層通過緩存來進行查詢,緩存中的數據是以key、value方式進行存儲(key就是當前的SQL語句,alue就是對應的數據)
- 注:在MySql5.7之后,緩存默認已經不開啟,并且在MySql8之后就完全棄用掉,因為通常存在緩存當中的數據是一些不太會變的數據,但是在數據庫當中的數據通常都是變化比較多的,導致緩存沒辦法命中,從而使這一塊的邏輯性能浪費掉了。所以MySql把緩存交給了應用層,數據庫層不做緩存處理。
1.2.2.2、解析器
- 如果沒有緩存,會經過解析器,解析器主要解析sql語句的語法是都正確;