MySQL讀書筆記 邏輯架構

2021-07-25 09:21:23 字數 1011 閱讀 5635

連線處理,授權認證,安全管理等。

每個客戶端連線都會在伺服器程序中擁有乙個執行緒,這個連線的查詢只會在這個單獨的執行緒中執行,該執行緒只能輪流在某個cpu中執行,伺服器會負責快取執行緒(例如,使用執行緒池,可以使用執行緒池中少量的執行緒來服務大量的連線),因此,不需要為每乙個新建的連線建立和銷毀執行緒。

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

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

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

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

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

包含了儲存引擎。儲存引擎負責mysql中資料的儲存和提取。和gnu/linux下的各種檔案系統一樣,每個儲存引擎都有它的優勢和劣勢。伺服器通過api與儲存引擎進行通訊,這些介面遮蔽了不同儲存引擎之間的差異,使得對上層透明。通常儲存引擎不會去解析sql(innodb會解析外來鍵定義),不同儲存引擎之間也不會相互通訊,而只是簡單地響應上層伺服器的請求。

參考[1] 高效能mysql,第三版

MySQL讀書筆記 邏輯架構

連線處理,授權認證,安全管理等。每個客戶端連線都會在伺服器程序中擁有乙個執行緒,這個連線的查詢只會在這個單獨的執行緒中執行,該執行緒只能輪流在某個cpu中執行,伺服器會負責快取執行緒 例如,使用執行緒池,可以使用執行緒池中少量的執行緒來服務大量的連線 因此,不需要為每乙個新建的連線建立和銷毀執行緒。...

《高效能MySQL》讀書筆記 MySQL邏輯架構

一 mysql邏輯架構 mysql最重要的 最與眾不同的特性是它的儲存引擎架構,這種構架的設計將查詢處理及其它系統任務和資料的儲存 提取相分離。第一層,服務層,最上層的服務並不是mysql獨有的,大多數基於網路的客戶端 服務端的工具或者服務都有類似的架構。主要為請求做連線處理,授權認證,安全等。第二...

軟體架構讀書筆記

我們自己不知不覺地設定了事物之間的界限,並把這些界限 層次與邏輯井然的東西稱為 系統 當我們從那些無序的事物中識別出了這樣的 系統 並用一些概念 名詞去定義了他們之後,我們對此的一切知識也就固化了。當這種秩序被建立起來之後,我們也就得到了對有序和無序價值的識別與肯否 當我們設定了種種價值 觀念 觀察...