數(shù)據(jù)庫引擎接收到一個新的查詢請求(Batch或SP),查詢優(yōu)化器會生成執(zhí)行計劃,并緩存到內(nèi)存中;下次再次執(zhí)行相同的查詢請求時,數(shù)據(jù)庫引擎從復(fù)用已經(jīng)緩存的執(zhí)行計劃,換句話,數(shù)據(jù)庫引擎為每一個查詢請求生成執(zhí)行計劃,并把已經(jīng)生成的執(zhí)行計劃緩存起來,當(dāng)接收到相同的查詢請求時,數(shù)據(jù)庫引擎復(fù)用已緩存的執(zhí)行計劃。查詢請求(Batch或SP)中的每一個查詢語句的執(zhí)行計劃,都會被緩存到內(nèi)存中,數(shù)據(jù)庫引擎統(tǒng)計執(zhí)行計劃的性能參數(shù),緩存在DMV:sys.dm_exec_query_stats中,在該視圖中,每一行數(shù)據(jù)都表示一個查詢語句的統(tǒng)計數(shù)據(jù):
sql_handle:用以唯一標(biāo)識一個TSQL文本(Batch或SP),TSQL文本存儲在SQL Manager Cache(SQLMGR)中;
plan_handle:用于唯一標(biāo)識一個已編輯的查詢計劃,查詢計劃存儲在計劃緩存中;
一個sql_handle 能夠生成多個查詢計劃,對應(yīng)多個plan_handle,但是每個plan_handle只能對應(yīng)一個sql_handle 。
一,獲取查詢語句
視圖sys.dm_exec_query_stats 緩存的是單個查詢語句的執(zhí)行計劃,而sql_handler引用的是整個TSQL文本(Batch或SP),為了獲得單個查詢語句的文本,必須通過語句的偏移字段來抽取,偏移量是字節(jié),字節(jié)數(shù)量從0開始:
statement_start_offset:語句開始偏移的字節(jié)序號
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26