mysql邏輯架構整體分為三層,最上層為客戶端層,並非mysql所獨有,諸如:連線處理、授權認證、安全等功能均在這一層處理。
mysql大多數核心服務均在中間這一層,包括查詢解析、分析、優化、快取、內建函式(比如:時間、數學、加密等函式)。所有的跨儲存引擎的功能也在這一層實現:儲存過程、觸發器、檢視等。
最下層為儲存引擎,其負責mysql中的資料儲存和提取。和linux下的檔案系統類似,每種儲存引擎都有其優勢和劣勢。中間的服務層通過api與儲存引擎通訊,這些api介面遮蔽了不同儲存引擎間的差異。
在解析乙個查詢語句前,如果查詢快取是開啟的,那麼mysql會檢查這個查詢語句是否命中查詢快取中的資料。如果當前查詢恰好命中查詢快取,在檢查一次使用者許可權後直接返回快取中的結果。這種情況下,查詢不會被解析,也不會生成執行計畫,更不會執行。
mysql通過關鍵字將sql語句進行解析,並生成一顆對應的解析樹。這個過程解析器主要通過語法規則來驗證和解析。比如sql中是否使用了錯誤的關鍵字或者關鍵字的順序是否正確等等。預處理則會根據mysql規則進一步檢查解析樹是否合法。比如檢查要查詢的資料表和資料列是否存在等等。
經過前面的步驟生成的語法樹被認為是合法的了,並且由優化器將其轉化成查詢計畫。多數情況下,一條查詢可以有很多種執行方式,最後都返回相應的結果。優化器的作用就是找到這其中最好的執行計畫。
在完成解析和優化階段以後,mysql會生成對應的執行計畫,查詢執行引擎根據執行計畫給出的指令逐步執行得出結果。整個執行過程的大部分操作均是通過呼叫儲存引擎實現的介面來完成,這些介面被稱為handler api。
MySQL邏輯架構
庖丁解牛之前應該也是對牛的骨架有乙個全面的認知。同樣學習資料庫也從mysql的邏輯架構開始吧。了解mysql邏輯架構有助於深入理解mysql伺服器。最上層的服務並不是mysql所獨有的,大多數基於網路的客戶端 伺服器的工具或者服務都有類似的架構。比如連線處理 授權認證 安全等等。第二層,mysql大...
MySQL邏輯架構
mysql伺服器邏輯架構圖如下 每個虛線框為一層,總共三層。最上層的服務不是mysql特有的,大多數基於網路的客戶端 伺服器的工具或者服務都有類似的架構,為請求做連線處理,授權認證,安全等。第二層架構是大多數mysql的核心服務功能所在層,包括查詢解析,分析,優化,快取以及所有的內建函式,所有跨儲存...
MySQL 邏輯架構
對mysql架構的基本情況掌握了,才能深入學習高階mysql的一些知識。1.連線層 最上層是一些客戶端和連線服務,包含 本地sock通訊和大多數基於客戶端 服務端工具實現的類似於tcp ip的通訊。主要完成一些類似於連線處理 授權認證 及相關的安全方案。在該層上引入了執行緒池的概念,為通過認證安全接...