一條SQL語句的執行過程

一條SQL語句的執行過程

1.1 連接層

  1. 提供連接協議: TCP/IP, SOCKET
  2. 提供驗證: 用戶 密碼 IP SOCKET
  3. 提供專用連接線程: 接收用戶SQL,返回結果

通過以下語句可以查看鏈接線程的基本情況:

mysql> show processlist;

1.2 SQL層(重點)

  1. 接收上層傳送的SQL語句
  2. 語法驗證模塊:驗證語句語法
  3. 語義檢查:判斷SQL語句的類型
DDL: 數據定義語言
DCL: 數據控制語言
DML: 數據操作語言
DQL: 數據查詢語言
  1. 權限檢查: 用戶對庫表有沒有權限
  2. 解析器: 對語句執行前,進行預處理,生產解析樹(執行計劃)
  3. 優化器: 根據解析器得出多種執行計劃,進行判斷,選擇最優的執行計劃,代價模型:(CPU, IO, MEM)資源的損耗性能好壞.
  4. 執行器: 根據最優執行計劃, 執行SQL語句,產生執行結果,執行結果:在磁盤的xxx位置上.
  5. 提供查詢緩存(默認是沒有開啓的),會使用redis tair替代查詢緩存功能
  6. 提供日誌記錄(日誌管理章節): binlog 默認是沒有開啓的

1.3 存儲引擎層(類似於Linux中的文件系統)
負責根據SQL層執行的結果, 從磁盤上那數據,將16進制的磁盤數據,交由SQL結構化成表,由連接層的專用線程返回給用戶.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章