1. 程式人生 > 其它 >MySQL實戰學習筆記

MySQL實戰學習筆記

目錄

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)的時候,決定各個表的連線順序。

  • 執行器:執行語句,先判斷使用者有無查詢許可權,使用表定義的儲存引擎。