MySQL的基本架構大體可以分為server層和存儲引擎層,邏輯架構圖如下:

Server層除了圖中顯示的,還包括所有的内置函數(包括日期、時間、數學和加密函數等),存儲過程、觸發器、視圖等跨存儲引擎的功能都在這層實作。
存儲引擎層負責資料的存儲和提取,支援InnoDB、MyISAM、Memory等,從MySQL 5.5.5版本開始InnoDB成為預設的存儲引擎。
-
連接配接器
連接配接器負責跟用戶端建立連接配接、擷取權限、維持和管理連接配接。資料庫裡面的連接配接分為長連接配接和端連接配接,和tcp的連接配接類似。長連接配接過多會占用記憶體太大,進而出現OOM。可以考慮定期斷開長連接配接,尤其是執行過一個占用記憶體的大查詢;5.7版本以後可以執行 myssql_reset_connection來重新初始化連接配接資源。
-
查詢緩存
執行查詢語句時,如果之前執行過那麼語句和結果可能會以key(語句)-value(結果)直接緩存在記憶體中。
不建議使用查詢緩存,因為隻要有一個表更新,那麼這張表上所有查詢緩存都會被清空。8.0版本後删除了此功能。
-
分析器
分析器對SQL語句做解析,先做詞法分析,例如‘“select”-->查詢語句;再做文法分析。
-
優化器
表裡多個索引決定用哪個或者關聯查詢時決定表的連接配接順序
- 執行器
- 先判斷使用者對表T有沒有執行權限,沒有則傳回錯誤
- 有就調用指定引擎提供的接口,一行一行周遊表,将所有滿足條件的行組成的記錄集作為結果傳回給用戶端