MySql伺服器邏輯架構

2022-09-06 23:36:24 字數 1220 閱讀 1800

一、mysql伺服器邏輯架構圖

每個虛線框都是一層:

第二層:大多數的mysql的核心服務功能都在這一層,包括查詢解析、分析、優化、快取以及所有的內建函式(例如:日期,時間,數學和加密函式等)。所有跨儲存引擎的功能都在這一層實現:儲存過程,觸發器,檢視。

第三層:包含了儲存引擎。儲存引擎負責mysql中的資料儲存和提取。伺服器通過api和儲存引擎進行通訊,這些介面遮蔽了不同儲存引擎之間的差異,使得這些差異對上層的查詢過程透明。儲存引擎api包含了幾十個底層函式,用於執行諸如」開始乙個事務「或者」根據主鍵提取一行記錄「等操作。但儲存引擎不會去解析sql(innodb是乙個例外,它會解析外來鍵定義,因為mysql伺服器本身沒有實現該功能)

二、連線管理和安全性

每個客戶端連線都會在伺服器程序中擁有乙個執行緒,這個鏈結的查詢只會在這個單獨的執行緒中執行,該執行緒只能輪流在某個cpu核心或者cpu中執行。伺服器會負責快取執行緒,因此不需要為每乙個新建的建立或者銷毀執行緒。

當客戶端(應用)連線到mysql伺服器時,伺服器需要對其進行認證。認證基於使用者名稱,原始主機資訊和密碼。如果使用了安全套接字(ssl)的方式連線,還可以使用x.509整數認證。一旦客戶端連線成功,伺服器會繼續驗證該客戶端是否具有執行某個特定查詢的許可權。

三、優化與執行

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

優化器並不關心表使用的是什麼儲存引擎,但儲存引擎對於優化查詢是有影響的。優化器會起請求儲存引擎提供容量或某個具體操作的開銷資訊,以及表資料的統計資訊等。

對於select語句,在解析查詢之前,伺服器會先檢查快取(query cache),如果能夠在其中找到對應的查詢,伺服器就不必在執行查詢解析、優化和執行的整個過程,而是直接返回查詢快取中的結果集。

四、併發控制

分為伺服器層控制和儲存引擎層控制兩方面。都是使用讀寫鎖來控制。

鎖分為表鎖和行級鎖。

伺服器層使用表級鎖來同步,行級鎖只存在於儲存引擎層面

MySQL客戶端 伺服器架構

mysql的伺服器程式直接和我們儲存的資料打交道,客戶端程式連線伺服器,傳送增刪改查的請求,伺服器操作維護的資料響應請求。mysql伺服器程式的程序也被稱為mysql資料庫例項。我們啟動的mysql伺服器程序的預設名稱是mysqld,而常用的mysql客戶端程序預設名稱為mysql。不論通過哪種方式...

Linux SSH伺服器架構

1.ssh伺服器簡介 隨著網路應用的不斷普及,網路傳輸的資訊會越來越多,在保證資訊傳輸的同時,安全性也相當的重要。為了保證可靠的資料傳輸,一般都採用加密技術,而採用ssh進行加密,然後進行資料傳輸,這樣,資訊的安全性就得到了極大的提高。ssh是 secure shell安全外殼協議 ssh協議有兩個...

聊天伺服器架構

im系統種類 1.單聊 已讀未讀,端到端加密,離線訊息,2.群聊 大群 萬人群 記錄乙份聊天記錄。小群 200人以下群,使用者體驗不同,功能更多,可以在小群內做已讀未讀訊息,隱私訊息 小群 已讀未讀,使用mongodb記錄狀態。msgid,user 11110001 1 3.聊天室 沒有離線訊息的概...