標籤:mysql 邏輯架構 查詢快取 線程 儲存引擎
一、MySQL邏輯架構MySQL最重要的、最與從不同的特性是它的儲存引擎架構,這種構架的設計將查詢處理及其它系統任務和資料的儲存/提取相分離。
第一層,服務層,最上層的服務並不是MySQL專屬的,大多數基於網路的用戶端/服務端的工具或者服務都有類似的架構。主要為請求做串連處理,授權認證,安全等。
第二層,核心層,大多數MySQL的核心服務功能都在這一層,包括查詢解析,分析,最佳化,緩衝,以及所有的內建函數(例如日期、時間、數學和加密函數),所有跨儲存引擎的功能都在這一層實現:預存程序,觸發器,視圖等。
第三層,儲存引擎,儲存引擎負責MySQL中資料的儲存和提取。伺服器通過API與儲存引擎進行通訊。這些介面屏蔽了不同儲存引擎之間的差異,使得這些差異對上層的查詢過程透明。儲存引擎不會去解析SQL,不同儲存引擎之間也不會相互連信,而只是簡單地響應上層服務的請求。
串連管理與安全性(第一層 服務層)
> 串連流程
Δ 每個串連的查詢都在一個進程中的線程完成。
Δ 伺服器負責緩衝線程,所以服務層不需要為每個建立的串連建立或者銷毀線程(可以使用線程池)。
> 認證流程
1、當用戶端(應用)串連到MySQL伺服器時,伺服器需要對其進行認證。認證基於使用者名稱、原始主機資訊和密碼。如果使用了安全通訊端的方式串連,還可以使用X.509認證認證。
2、一旦用戶端串連成功,伺服器會繼續驗證該客戶是否具有執行某個查詢的許可權(例如對某個庫某張表執行查詢語句)
最佳化與執行
1、MySQL會解釋查詢,並建立內部資料結構(解析樹),然後對其進行各種最佳化,包括重寫查詢、決定表的讀取順序,以及選擇合適的索引等。
2、 對於SELECT語句,在解析查詢之前,伺服器會先檢查查詢快取,如果能命中,伺服器就不必再執行查詢解析、最佳化和執行的整個過程,直接返回查詢快取中的結果集。
MySQL重點:《高性能MySQL》讀書筆記--索引:http://blog.csdn.net/xifeijian/article/details/20312557
《高效能MySQL》讀書筆記--MySQL邏輯架構