建立連線(connectors&connection pool)
通過客戶端/伺服器通訊協議與mysql建立連線。mysql 客戶端與服務端的通訊方式是 「 半雙工 」。對於每乙個 mysql 的連線,時刻都有乙個執行緒狀態來標識這個連線正在做什麼。
id:執行緒id,可以使用kill xx;
user:啟動這個執行緒的使用者
host:傳送請求的客戶端的ip和埠號
db:當前命令在哪個庫執行
command:該執行緒正在執行的操作命令
create db:正在建立庫操作time:表示該執行緒處於當前狀態的時間,單位是秒drop db:正在刪除庫操作
execute:正在執行乙個preparedstatement
close stmt:正在關閉乙個preparedstatement
query:正在執行乙個語句
sleep:正在等待客戶端傳送語句
quit:正在退出
shutdown:正在關閉伺服器
state:執行緒狀態
updating:正在搜尋匹配記錄,進行修改info:一般記錄執行緒執行的語句,預設顯示前100個字元。想檢視完整的使用show full processlist;sleeping:正在等待客戶端傳送新請求
starting:正在執行請求處理
checking table:正在檢查資料表
closing table : 正在將表中資料重新整理到磁碟中
locked:被其他查詢鎖住了記錄
sending data:正在處理select查詢,同時將結果傳送給客戶端
這是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 乙個函式,那...