MySQL實戰學習筆記
阿新 • • 發佈:2021-08-20
目錄
01 | 基礎架構:一條SQL查詢語句是如何執行的?
基礎架構
-
大體來說,MySQL分為Server層和儲存引擎層兩部分。
-
Server 層包括聯結器、查詢快取、分析器、優化器、執行器等
-
涵蓋 MySQL 的大多數核心服務功能,以及所有的內建函式(如日期、時間、數學和加密函式等)
-
所有跨儲存引擎的功能都在這一層實現,比如儲存過程、觸發器、檢視等
-
-
而儲存引擎層負責資料的儲存和提取
-
其架構模式是外掛式的,支援 InnoDB、MyISAM、Memory 等多個儲存引擎。
-
不同的儲存引擎共用一個 Server 層
-
現在最常用的儲存引擎是 InnoDB,它從 MySQL 5.5.5 版本開始成為了預設儲存引擎。
-
執行 create table 建表的時候,如果不指定引擎型別,預設使用的就是 InnoDB。
-
也通過指定儲存引擎的型別來選擇別的引擎,比如在 create table 語句中使用 engine=memory, 來指定使用記憶體引擎建立表。
-
不同儲存引擎的表資料存取方式不同,支援的功能也不同
-
-
-
-
聯結器:負責跟客戶端建立連線、獲取許可權、維持和管理連線。
-
查詢快取:查詢請求先訪問快取(key 是查詢的語句,value 是查詢的結果)。命中直接返回。不推薦使用快取,更新會把快取清除(關閉快取:引數 query_cache_type 設定成 DEMAND)。
-
分析器:對 SQL 語句做解析,判斷sql是否正確。
-
優化器:決定使用哪個索引,多表關聯(join)的時候,決定各個表的連線順序。
-
執行器:執行語句,先判斷使用者有無查詢許可權,使用表定義的儲存引擎。