mysql採用外掛式的儲存引擎架構將查詢處理和其他的系統任務以及資料的儲存提取相分離。
在對mysql進行優化前,需要對mysql的層次結構有一定了解,當問題出現時(等待時間長,查詢時間長),可以更好的定位到問題的位置。
連線層
最上層的連線層提供一些使用者端的連線服務,包含本地sockt通訊和大多數基於使用者端/伺服器端工具實現的類似tcp/ip的通訊。只要完成一些類似於連線處理、授權認證及相關的安全方案。在該層上引入了連線池的概念,為通過認證安全接入的客戶提供執行緒。同一在該層上可以實現基於SSL的安全連結。
服務層
第二層架構主要完成大多數的核心服務功能,如SQL介面,並完成快取的查詢,SQL的分析和優化以及部分內建函數的執行。又有跨儲存引擎的功能也在這一層實現,如過程、函數等。在該層,伺服器會解析查詢並建立相應的內部解析樹,並對 其完成相應的優化如確定查詢表的順序、是否利用索引等,最後生成相應的執行操作。如果是select語句,伺服器還會查詢內部的快取。如果快取空間足夠大,這樣在解決大量讀操作的環境中能很好的提示系統的效能。
引擎層
儲存引擎層,儲存引擎真正的負責了MySQL中資料的儲存和提取,伺服器通過API與儲存引擎進行通訊。不同的儲存引擎具有不同的側重點和功能,這樣我們可以根據自己的實際需要進行選取。主流引擎MyISAM和InnoDB
儲存層
資料儲存層,主要是將資料儲存在執行於裸裝置的檔案系統之上,並完成於儲存引擎的互動。