高性能MySQL(第3版)筆記 1.1 MySQL邏輯架構

1.1 MySQL邏輯架構

在這裏插入圖片描述
每個虛線框都是一層:

第一層:

最上層的服務器不是MySQL所獨有的,大多數基於網絡的客戶端\服務器工具或者服務(鏈接處理、授權認證、安全等等)都有類似的系統

第二層:

大多數的MySQL的核心服務功能都在這一層,包括查詢解析分析優化緩存以及所有的內置函數(日期、時間、數學和加密函數等)。所有跨存儲引擎的功能(存儲過程、觸發器、視圖)都在這一層實現

第三層

包含了存儲引擎。存儲引擎負責MySQL中數據存儲提取。服務器通過API存儲引擎進行通信,這些接口屏蔽了不同存儲引擎之前的差異,是的這些差異對上層的查詢過程透明。存儲引擎API包含了十幾個底層函數,用於執行諸如“開始一個事務”或者“根據主鍵提取一行記錄”等操作。但存儲引擎不會去解析SQL(InnoDB除外,它會解析外間定義,因爲MySQL服務器本身沒有實現該功能)

1.1.1 連接管理和安全性

每個客戶端連接都會在MySQL服務器進程中擁有一個線程,這個連接的查詢只會在這個單獨的線程中執行,該線程只能輪流在某個CPU核心或者CPU中運行。服務器會負責緩存線程,因此不需要爲每一個新建的連接創建或者銷燬線程。
當客戶端(應用)連接到MySQL服務器時,服務器需要對其進行認證。認證基於用戶名,原始主機信息和密碼。如果使用了安全套接字(SSL)的方式連接,還可以使用X.509整數認證。一旦客戶端呢連接成功,服務器會繼續驗證該客戶端是否具有執行某個特定查詢的權限

1.1.2 優化與執行

MySQL會解析查詢,並創建內部數據結構(解析樹),然後對其進行各種優化,包括重寫查詢、決定表的讀取順序,依舊選擇合適的索引等。用戶可以通過特殊的關鍵字提示(hint)優化器,影響它的決策過程。也可以請求優化器解釋(explain)優化過程的各個因素,使用戶可以知道服務器是如何進行優化決策的,並提供一個參考基準,便於用戶重構查詢和schema(對於MySQL下的schema,可以理解成就是存儲數據的地方)、修改相關配置,使應用盡可能高效運行。

優化器並不關心表使用的是什麼存儲引擎,但存儲引擎對於優化查詢是有影響的。優化器會起請求存儲引擎提供容量或某個具體操作的開銷信息,以及表數據的統計信息等。
對於SELECT語句,在解析查詢之前,服務器會先檢查緩存(Query cache),如果能夠在其中找到對應的查詢,服務器就不必在執行查詢解析、優化和執行的整個過程,而是直接返回查詢緩存中的結果集。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章