1. 程式人生 > >01 | 基礎架構:一條SQL查詢語句是如何執行的?

01 | 基礎架構:一條SQL查詢語句是如何執行的?

#<-- 該文章借鑑林曉斌老師mysql實戰45講 ->

一條SQL查詢語句是如何執行的?

  1. mysql 的基礎架構示意圖如下所示:
    在這裡插入圖片描述

  2. 客戶端----->服務層------->儲存層
    服務層包括聯結器,查詢快取,分析器,優化器,執行器,以及所有的內建函式儲存引擎則負責資料的儲存和提取,儲存引擎又分myisam, innodb等等, 所有種類的儲存引擎共用同一個服務層mysql5.55後預設儲存引擎為innodb

  3. 聯結器分為長連線和短連線,由於連線過程比較複雜,建議儘量使用長連線,同時使用長連線後,資料庫所佔用的記憶體會持續增加很可能導致mysql異常重啟,所以需要定期斷開長連線,或者監聽執行佔用較大記憶體的查詢,查詢後斷開連線進行重連

  4. 不建議開啟查詢快取,因為任何一個表的更新操作都會清空該表相關的所有快取,效率極低,除非針對的是靜態表或者更新操作極小的表,在mysql8後就不存在查詢快取此功能了

  5. 分析器對sql進行語法分析,判斷sql是否存在語法錯誤,sql中的表和相關欄位是否存在等

  6. 優化器是對執行方案進行選擇,選擇一個最優的方案,例如選擇哪個索引等等

  7. 執行器在判斷是否具有相應的操作許可權後,就開始呼叫儲存引擎的相關介面執行sql語句,在掃描資料過程中將滿足條件的資料放入快取集合然後統一返回給客戶端