Mysql架構原理

2021-10-08 01:30:10 字數 1751 閱讀 1712

網路連線層

客戶端聯結器:提供與mysql伺服器監理連線的支援。各個語言使用各自的api技術與mysql建立連線。

服務層服務層是mysql的核心,主要包含以下六個部分:

儲存引擎層

儲存引擎負責mysql中資料的儲存和提取,與底層系統檔案進行互動。mysql儲存引擎是外掛程式式的,伺服器中的查詢執行引擎通過介面與儲存引擎進行通訊,遮蔽了不同引擎之間的差異。

系統檔案層

系統檔案層主要負責將資料庫的資料和日誌儲存在檔案系統之上,並完成與儲存引擎的互動,是檔案的物理儲存層。

① 建立連線

通過客戶端/伺服器通訊協議與mysql建立連線,客戶端和服務端的通訊方式為「半雙工」。對於乙個mysql連線,時刻都有乙個執行緒來標識當前連線正在做什麼。

通訊機制

檢視執行緒狀態

建立連線之後可以通過以下語句檢視正在執行的執行緒資訊

show processlist;  // 檢視使用者正在執行的執行緒資訊

字段說明:

time:表示該執行緒處於當前狀態的時間,單位是秒。

state:執行緒狀態

info:記錄執行緒執行的語句,預設顯示前100個字元。想檢視完整的使用show full processlist;

客戶端如果太長時間沒動靜,聯結器就會自動將它斷開。這個時間是由引數 wait_timeout 控制的,預設值是 8 小時

② 查詢快取

如果開啟了查詢快取且在查詢快取過程中查詢到完全相同的sql語句,則將查詢結果直接返回給客戶端;如果沒有開啟查詢快取或者沒有查詢到完全相同的sql語句則會由解析器進行語法語義分析,並生成「解析樹」。

檢視快取是否開啟:

show variables like '%query_cahce%'; //檢視查詢快取是否啟用,空間大小,限制等

show status like 'qcache%'; //檢視更詳細的快取引數,可用快取空間,快取塊,快取多少等

③ 分析器

mysql需要知道做什麼,因此需要對sql進行解析,分析器會將客戶端傳送的sql進行語法解析,生成「解析樹」。預處理器根據一些mysql規則進一步檢查其合法性,最終生成新的「解析樹」。

④ 查詢優化器

根據「解析樹」生成最優的執行計畫。mysql使用很多優化策略生成最優的執行計畫,可以分為兩類:靜態優化(編譯時)和動態優化(執行時)

⑤ 執行器

執行sql語句,此時查詢執行引擎會根據 sql 語句中表的儲存引擎型別,以及對應的api介面與底層儲存引擎快取或者物理檔案的互動,得到查詢結果並返回給客戶端。若開啟用查詢快取,這時會將sql 語句和結果完整地儲存到查詢快取(cache&buffer)中,以後若有相同的 sql 語句執行則直接返回結果。

innodb和myisam對比

鎖機制

索引結構

併發處理能力

儲存結構

使用場景

myisam

innodb

MySQL架構原理及優化

客戶端向mysql伺服器傳送一條查詢請求 伺服器首先檢查查詢快取,如果命中快取,則立刻返回儲存在快取中的結果。否則進入下一階段 伺服器進行sql解析 預處理 再由優化器生成對應的執行計畫 mysql根據執行計畫,呼叫儲存引擎的api來執行查詢 將結果返回給客戶端,同時快取查詢結果 mysql 不會在...

MySql執行機制原理和架構

主要補充了一些事務隔離級別會帶來的問題以及可以避免什麼問題,還有就是mysql內部優化語法樹的規則。目錄 一 mysql知識普及 二 mysql邏輯架構 三 併發控制和鎖的概念 四 事務 五 mysql儲存引擎及應用方案 mysql是乙個開放源 的關聯式資料庫管理系統。mysql架構可以在多種不同場...

Elasticsearch 架構原理

elasticsearch的一些架構設計,對我們做效能調優 故障處理,具有非常重要的影響。下面將從elasticsearch的準實時索引的實現 自動發現 rounting和replica的讀寫過程,shard的allocate控制 在傳統的資料庫中,乙個欄位存乙個值,但是這對於全文搜尋是不足的。想要...