1. 程式人生 > >MySql服務器邏輯架構

MySql服務器邏輯架構

通信 都在 方式 返回 權限 選擇 分析 其中 服務器

一、MySql服務器邏輯架構圖 技術分享圖片 技術分享圖片 每個虛線框都是一層: 第一層:最上層的服務器不是MySql所獨有的,大多數基於網絡的客戶端/服務器工具或者服務都有類似的系統。比如鏈接處理,授權認證,安全等等。 第二層:大多數的MySql的核心服務功能都在這一層,包括查詢解析、分析、優化、緩存以及所有的內置函數(例如:日期,時間,數學和加密函數等)。所有跨存儲引擎的功能都在這一層實現:存儲過程,觸發器,視圖。 第三層:包含了存儲引擎。存儲引擎負責MySql中的數據存儲和提取。服務器通過API和存儲引擎進行通信,這些接口屏蔽了不同存儲引擎之間的差異,使得這些差異對上層的查詢過程透明。存儲引擎API包含了幾十個底層函數,用於執行諸如”開始一個事務“或者”根據主鍵提取一行記錄“等操作。但存儲引擎不會去解析SQL(InnoDB是一個例外,它會解析外鍵定義,因為MySQL服務器本身沒有實現該功能) 二、連接管理和安全性 每個客戶端連接都會在服務器進程中擁有一個線程,這個鏈接的查詢只會在這個單獨的線程中執行,該線程只能輪流在某個CPU核心或者CPU中運行。服務器會負責緩存線程,因此不需要為每一個新建的創建或者銷毀線程。 當客戶端(應用)連接到MySQL服務器時,服務器需要對其進行認證。認證基於用戶名,原始主機信息和密碼。如果使用了安全套接字(SSL)的方式連接,還可以使用X.509整數認證。一旦客戶端連接成功,服務器會繼續驗證該客戶端是否具有執行某個特定查詢的權限。 三、優化與執行 MySQL會解析查詢,並創建內部數據結構(解析樹),然後對其進行各種優化,包括重寫查詢,決定表的讀取順序,以及選擇合適的索引等。用戶可以通過特殊的關鍵字提示(hint)優化器,影響他的決策過程。也可以請求優化器解釋(explain)優化過程的各個因素,使用戶可以知道服務器是如何進行優化決策的,並提供一個參考基準,便於用戶重構查詢和schema(對於MySQL下的schema,可以理解成就是存儲數據的地方)、修改相關配置,使應用盡可能高效運行。 優化器並不關心表使用的是什麽存儲引擎,但存儲引擎對於優化查詢是有影響的。優化器會起請求存儲引擎提供容量或某個具體操作的開銷信息,以及表數據的統計信息等。 對於SELECT語句,在解析查詢之前,服務器會先檢查緩存(Query cache),如果能夠在其中找到對應的查詢,服務器就不必在執行查詢解析、優化和執行的整個過程,而是直接返回查詢緩存中的結果集。 四、並發控制 分為服務器層控制和存儲引擎層控制兩方面。都是使用讀寫鎖來控制。 鎖分為表鎖和行級鎖。 服務器層使用行級鎖來同步,行級鎖只存在於存儲引擎層面

MySql服務器邏輯架構