mysql 架構分為兩部分,server層與儲存引擎。其中 server 包含 聯結器、查詢快取、分析器、優化器、執行器。儲存引擎架構模式為外掛程式式的,支援 innodb、myisam、memory 等多個儲存引擎,最常用的是 innodb。
建立資料庫連線,驗證使用者名稱密碼是否匹配。
讀取使用者許可權資訊並記錄下來之後所有的許可權驗證都使用這個資訊。(建立連線後修改了使用者許可權,需要重新登入才會生效。就是因為 mysql 這一步的操作)
許可權驗證時機
在查詢快取命中返回結果之前。
執行器執行之前。
查詢語句優先查詢快取,如果快取命中直接返回。否則繼續按序執行。通過sql語句來判斷快取是否命中。
快取儲存內容為 key,value 形式,執行sql語句是 key,結果是 value
每當表發生更新動作,快取內容先被清空。
不建議使用,通過 query_cache_type demand 關閉。查詢時指定使用快取 (mysql 8.0 之後刪除了這個功能。)
mysql> select sql_cache * from t where id=10;
獲取語義,分析輸入的語句是什麼目的,是查詢還是刪除還是修改等等。
語法分析,檢查語法輸入是否正確。
表、字段分析,分析要執行的表或字段是否存在。
對sql執行語句進行優化,是否使用索引,多結果集如何關聯查詢等。
執行優化器優化後的 sql 語句,在執行前進行許可權驗證,使用的資訊為聯結器提供的許可權資訊。
呼叫儲存引擎介面執行具體的 sql 語句。
提供資料訪問介面。
進行資料的持久化儲存。
mysql> select * from t where id=10;
建立連線
查詢快取
語義語法分析
語句優化
執行執行,呼叫儲存引擎介面查詢資料
返回結果
mysql架構 MySQL的基礎架構
mysql是關聯式資料庫,關聯式資料庫,顧名思義,是建立在關係模型基礎上的資料庫,我們現實世界中的各種實體以及實體之間的各種聯絡一般可用關係模型來表示。經過數十年的發展,關聯式資料庫在理論和工業實踐中都已經發展到很成熟的地步,可以說,目前的絕大部分應用,使用mysql都有成熟的解決方案。資料庫的架構...
MySQL基礎架構
mysql 基本架構示意圖 負責跟客戶端建立連線 獲取許可權 維持和管理連線。平常使用中要盡量使用長連線,但是當全部使用長連線後,mysql占用記憶體會漲的特別快,原因是mysql在執行過程中臨時使用的記憶體是管理在連線 物件裡面的,這些資源會在連線斷開的時候才釋放,大量長連線積累下來會導致記憶體占...
MySQL基礎架構
mysql可以被分為server層和儲存引擎層兩個部分。server層包括聯結器 查詢快取 分析器 優化器 執行器等,涵蓋mysql的大多數核心服務功能,以及所有的內建函式 如日期 時間 數學和加密函式等 所有跨儲存引擎的功能都在這一層實現,比如儲存過程 觸發器 檢視等。儲存引擎層直接處理資料。其架...