網路連線層
客戶端聯結器:提供與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控制 在傳統的資料庫中,乙個欄位存乙個值,但是這對於全文搜尋是不足的。想要...