MySQL分為兩部分:
Server層
包含連接器、查詢快取、分析器、優化器、執行器等,涵蓋MySQL的大多數核心服務功能,以及所有的內置函式(如日期、時間、數學和加密函式等),所有跨存盤引擎的功能都在這一層實作,比如存盤程序、觸發器、視圖等,- 存盤引擎層
負責資料的存盤和提取,其架構模式是插件式的,支持InnoDB、MyISAM、Memory等多個存盤引擎,MySQL 5.5.5版本開始InnoDB為默認的存盤引擎,
Server層:
-
連接器
負責跟客戶端建立連接、獲取權限、維持和管理連接mysql -h$ip -P$port -u$user -p //連接資料庫輸入密碼后,如果用戶名或密碼不對,則會提示
Access denied for user,如果認證通過,連接器會到權限表里面查出你擁有的權限,之后,這個連接里面的權限判斷邏輯,都將依賴此時讀到的權限,show processlist //顯示所有連接 -
查詢快取
命中則直接回傳結果,MySQL拿到查詢請求后,會先到查詢快取看看,之前是否執行過這條陳述句,之前執行過的陳述句及其結果可能會以key-value對的形式,被直接快取在記憶體中,key為sql陳述句,有則回傳,沒有就會進行分析器以后的流程,執行完成后結果會被存入查詢快取,當表中有執行更新操作時,則該表對應的所有查詢快取失效,MySQL 8.0版本直接將查詢快取的整塊功能刪掉了, -
分析器
詞法分析,語法分析,如果沒有命中查詢快取,就要開始執行陳述句,MySQL需要知道你要做什么,需要對SQL陳述句進行分析,
詞法分析:SQL陳述句中各個字串分別代表什么
語法分析:判斷SQL陳述句是否滿足MySQL語法, -
優化器
執行計劃生成,索引選擇,在表里有多個索引時決定用哪個索引;在一個陳述句有多表關聯時,決定各個表的連接順序等,優化器得出幾個方案后,會選擇最好的方案, -
執行器
操作存盤引擎,回傳結果
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/62707.html
標籤:MySQL
下一篇:日志系統(2)
