【Mysql】-- 邏輯架構

邏輯架構圖

一條sql語句是如何在mysql的各個功能模塊中執行的?
在這裏插入圖片描述

連接器

連接器負責跟客戶端建立連接,獲取權限,維持和管理連接。
步驟:

  1. 驗證用戶名和密碼
  2. 根據用戶名和密碼認證當前連接所擁有的權限
  3. 連接完成後,若沒有後續動作則連接處於空閒狀態。

查詢緩存

連接建立完成就可以執行sql語句了,此時會先查詢緩存,看之前是否執行過這條sql, 之前執行過的sql和結果會以key,value的形式被直接緩存在內存中,key是查詢語句,value是查詢結果。如果可以命中緩存,將大幅提高查詢效率。
但大多數情況下,不建議使用查詢緩存,mysql8.0也將查詢緩存的功能刪掉了。原因是查詢緩存的弊大於利,查詢緩存的失效十分頻繁,只要有對一個表的更新。這個表所有的查詢緩存都會被清空,因此當我們費時的將緩存結果存起來,還沒來得及使用時就已經被清空掉了。
所以,對於更新壓力大的數據庫來說,查詢緩存命中率會非常低。

分析器

分析器對sql語句做解析,會做詞法分析和語法分析,判斷表是否存在,列是否存在,sql語句是否正確。如果你的sql語句不對,就會收到錯誤提示:

ERROR 1064 (42000): You have an error in your SQL syntax;

優化器

經過分析器,mysql知道你要做什麼,但是在執行sql之前,需要經過優化器來決定怎麼做。
比如我們建了多個索引時,優化器會決定使用哪個索引;有多表關聯時,優化器來決定各個表的連接順序,執行器會去選擇方案已達到最優的效率。

執行器

優化器階段完成之後,sql語句的執行方案就已確定了,然後進入執行器階段。執行器會根據執行方案來執行語句,先驗證權限然後打開表,根據表的引擎定義去使用該引擎提供的接口,最後將處理sql得到的結果集返回給客戶端。

mysql機讀順序

在這裏插入圖片描述
在這裏插入圖片描述

mysql體系結構

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章