MySQL執行機制

2021-10-24 07:16:21 字數 1562 閱讀 3058

建立連線(connectors&connection pool)

通過客戶端/伺服器通訊協議與mysql建立連線。mysql 客戶端與服務端的通訊方式是 「 半雙工 」。對於每乙個 mysql 的連線,時刻都有乙個執行緒狀態來標識這個連線正在做什麼。

id:執行緒id,可以使用kill xx;

user:啟動這個執行緒的使用者

host:傳送請求的客戶端的ip和埠號

db:當前命令在哪個庫執行

command:該執行緒正在執行的操作命令

create db:正在建立庫操作

drop db:正在刪除庫操作

execute:正在執行乙個preparedstatement

close stmt:正在關閉乙個preparedstatement

query:正在執行乙個語句

sleep:正在等待客戶端傳送語句

quit:正在退出

shutdown:正在關閉伺服器

time:表示該執行緒處於當前狀態的時間,單位是秒

state:執行緒狀態

updating:正在搜尋匹配記錄,進行修改

sleeping:正在等待客戶端傳送新請求

starting:正在執行請求處理

checking table:正在檢查資料表

closing table : 正在將表中資料重新整理到磁碟中

locked:被其他查詢鎖住了記錄

sending data:正在處理select查詢,同時將結果傳送給客戶端

info:一般記錄執行緒執行的語句,預設顯示前100個字元。想檢視完整的使用show full processlist;

這是mysql的乙個可優化查詢的地方,如果開啟了查詢快取且在

查詢快取過程中查詢到完全相同的sql語句,則將查詢結果直接返回給客戶端;如果沒有開啟查詢

快取或者沒有查詢到完全相同的 sql 語句則會由解析器進行語法語**析,並生成「解析樹」。

解析器解析器(parser)將客戶端傳送的sql進行語法解析,生成"解析樹"。預處理器根據一些mysql

規則進一步檢查「解析樹」是否合法,例如這裡將檢查資料表和資料列是否存在,還會解析名字和別

名,看看它們是否有歧義,最後生成新的「解析樹」

查詢優化器

查詢優化器(optimizer)根據「解析樹」生成最優的執行計畫。mysql使用很多優化策略生成最

優的執行計畫,可以分為兩類:靜態優化(編譯時優化)、動態優化(執行時優化)。

查詢執行引擎負責執行 sql 語句

查詢執行引擎負責執行 sql 語句,此時查詢執行引擎會根據 sql 語句中表的儲存引擎型別,以

及對應的api介面與底層儲存引擎快取或者物理檔案的互動,得到查詢結果並返回給客戶端。若開

啟用查詢快取,這時會將sql 語句和結果完整地儲存到查詢快取(cache&buffer)中,以後若有

相同的 sql 語句執行則直接返回結果。

Mysql 一 mysql執行機制

全面了解mysql的執行機制,從而了解當前系統的瓶頸,找到優化方案。借用一張圖 從上圖可以清晰看出mysql的內部架構,可以清楚的看到mysql是由連線池connection pool,sql介面,解析器,優化器,快取,儲存引擎組成的。connectors 指的是不同語言中與sql的互動 manag...

session執行機制

session機制是一種伺服器端的機制,伺服器使用一種類似於雜湊表 的結構 也可能就是使用 雜湊表 來儲存資訊。當程式需要為某個客戶端的請求建立乙個session的時候,伺服器首先檢查這個客戶端的請求裡是否已包含了乙個session標識 稱為sessionid,如果已包含乙個sessionid則說明...

try catch finally執行機制

finally的執行 如下的程式所示,注釋中是執行的順序 public class test public static string test finally public static string test1 finally其實是僅在return 語句執行前執行,如果return 乙個函式,那...