一條SQL語句的執行過程

2021-10-02 17:30:46 字數 792 閱讀 6915

1.1連線層

提供連線協議: tcp/ip, socket

提供驗證: 使用者 密碼 ip socket

提供專用連線線程: 接收使用者sql,返回結果

通過以下語句可以檢視鏈結執行緒的基本情況:

mysql> show processlist;
1.2sql層(重點)

接收上層傳送的sql語句

語法驗證模組:驗證語句語法

語義檢查:判斷sql語句的型別

ddl: 資料定義語言

dcl: 資料控制語言

dml: 資料操作語言

dql: 資料查詢語言

許可權檢查: 使用者對庫表有沒有許可權

解析器: 對語句執行前,進行預處理,生產解析樹(執行計畫)

優化器: 根據解析器得出多種執行計畫,進行判斷,選擇最優的執行計畫,代價模型:(cpu, io, mem)資源的損耗效能好壞.

執行器: 根據最優執行計畫, 執行sql語句,產生執行結果,執行結果:在磁碟的***位置上.

提供查詢快取(預設是沒有開啟的),會使用redis tair替代查詢快取功能

提供日誌記錄(日誌管理章節): binlog 預設是沒有開啟的

1.3儲存引擎層(類似於linux中的檔案系統)

負責根據sql層執行的結果, 從磁碟上那資料,將16進製制的磁碟資料,交由sql結構化成表,由連線層的專用線程返回給使用者.

MySQL中一條SQL語句的執行過程

查詢語句的執行順序 客戶端通過tcp連線傳送連線請求到mysql聯結器,聯結器會對該請求進行許可權驗證及連線資源分配 max connections,8小時超時 建立連線後客戶端傳送一條語句,mysql收到該語句後,通過命令分發器判斷其是否是一條select語句,如果是,在開啟查詢快取的情況下,先在...

一條SQL更新語句的執行過程

目錄如果執行這條更新語句資料庫是如何執行的呢?update student set name 小明 where studentid 1根據之前說過的sql語句查詢的流程來說,只要表上有資料更新,有關查詢的索引就會失效,接下來分析器會根據每個單詞識別知道這是update語句,優化器根據這個id獲取需要...

2 2 執行一條SQL語句

對資料庫執行一條sql語句 1 mixed mysqli query mysqli link,string query,int resultmode mysqli store result 1 對於insert,update,delete等不會返回資料的sql語句,在執行沒有錯誤時返回true 2 ...