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 ...