MySQL實戰45講筆記一
阿新 • • 發佈:2020-06-22
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有沒有執行許可權,沒有則返回錯誤
有就呼叫指定引擎提供的介面,一行一行遍歷表,將所有滿足條件的行組成的記錄集作為結果返回給客戶端