整體概覽:mysql
和其它數據庫相比,MySQL有點不同凡響,它的架構能夠在多種不一樣場景中應用併發揮良好做用。主要體如今存儲引擎的架構上,
插件式的存儲引擎架構將查詢處理和其它的系統任務以及數據的存儲提取相分離。這種架構能夠根據業務的需求和實際須要選擇合適的存儲引擎。
sql
1.鏈接層
最上層是一些客戶端和鏈接服務,包含本地sock通訊和大多數基於客戶端/服務端工具實現的相似於tcp/ip的通訊。主要完成一些相似於鏈接處理、受權認證、及相關的安全方案。在該層上引入了線程池的概念,爲經過認證安全接入的客戶端提供線程。一樣在該層上能夠實現基於SSL的安全連接。服務器也會爲安全接入的每一個客戶端驗證它所具備的操做權限。
2.服務層
2.1 Management Serveices & Utilities: 系統管理和控制工具
2.2 SQL Interface: SQL接口
接受用戶的SQL命令,而且返回用戶須要查詢的結果。好比select from就是調用SQL Interface
2.3 Parser: 解析器
SQL命令傳遞到解析器的時候會被解析器驗證和解析。
2.4 Optimizer: 查詢優化器。
SQL語句在查詢以前會使用查詢優化器對查詢進行優化。
用一個例子就能夠理解: select uid,name from user where gender= 1;
優化器來決定先投影仍是先過濾。
2.5 Cache和Buffer: 查詢緩存。
若是查詢緩存有命中的查詢結果,查詢語句就能夠直接去查詢緩存中取數據。
這個緩存機制是由一系列小緩存組成的。好比表緩存,記錄緩存,key緩存,權限緩存等
緩存是負責讀,緩衝負責寫。
3.引擎層
存儲引擎層,存儲引擎真正的負責了MySQL中數據的存儲和提取,服務器經過API與存儲引擎進行通訊。不一樣的存儲引擎具備的功能不一樣,這樣咱們能夠根據本身的實際須要進行選取。後面介紹MyISAM和InnoDB
4.存儲層
數據存儲層,主要是將數據存儲在運行於裸設備的文件系統之上,並完成與存儲引擎的交互。
數據庫
查詢說明:緩存
首先,mysql的查詢流程大體是:安全