建体彩网|中彩网双色球连号|
?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和記娛樂安卓下載和:《Microsoft Sql server 2008 Internals》讀書筆記第九章Plan Caching and Recompilation(7)

?

上文我們懂得計劃緩存內部操作的第一部分-緩存存儲。本日我們繼承關注已編譯計劃、履行高低文和計劃緩存元數據相關的幾個異常有用的系統函數和視圖。

■已編譯計劃(Compiled Plans)

在Object和SQL計劃緩存存儲中有兩種主要的計劃類型:已編譯的計劃和履行計劃。已編譯計劃是我們反省sys.dm_exec_cached_plans視圖時看到的類型之一,前面我們已經提到過與編譯計劃有關的三個主要的objType值:Adhoc,Prepsred,Proc。已編譯的計劃可以被存儲在工具存儲或SQL存儲中,這取決于他們的objType值。已編譯計劃被看作可量化的內存工具。他們re-creat和記娛樂安卓下載和e和資源太高了,是以,SQL Server試圖在緩存中保留它們。當SQL Server面臨較大年夜的內存壓力時,移除緩存工具的策略使我們的編譯計劃不是被移除的第一個工具。

一個編和記娛樂安卓下載和譯計劃被覺得是一個完全的批處置懲罰,而不僅僅是單個的語句。對付一個多語句的批處置懲罰,你可以把已編譯計劃看和記娛樂安卓下載和作一個計劃數組,已編譯的計劃能被在多個會話與用戶間共享。定義給某個已編譯計劃的特定履行的(被存儲在別的一個布局中的)信息,被稱為可履行計劃。

■履行高低文(Execution Contexts)

可履行計劃或履行高低文,被看作隸屬于已編譯計劃,而不顯示在sys.dm_exec_cached_plans視圖中。可履行計劃是在一個已編譯計劃履行時被運行時創建。可履行計劃可能是存儲在工具存儲中的工具計劃,也可能是存儲在SQL存儲中的SQL計劃。每個可履行計劃針對一個已編譯計劃的一次履行包孕特定的運行時信息,包括實際的運行時參數、任何局部變量信息、在運行時為工具創建的Object IDs,User ID,批處置懲罰中關于當前履行語句的信息等。

當SQL Server開始履行一個已編譯計劃時,它從已編譯計劃中天生一個可履行計劃。每一個編譯計劃中的自力語句,都獲得自己的可履行計劃,你可以看作是一個運行時查詢計劃。與已編譯計劃不合的是,可履行計劃只能針對單個的會話。例如,假如100個用戶模擬履行相同的批處置懲罰,將會有100個針對相同已編譯計劃的可履行計劃。可履行計劃能被從相關的已編譯計劃再天生。比起Create相對資源要低一些。稍后我們會關注與此相關的sys.dm_exec_cached_plan_dependent_objects視圖。

■計劃緩存元數據(Plan Cache Metadata)

■句柄(handle)

sys.dm_exec_cached_plans視圖為每個已編譯計劃包孕一個值plan_handle。Plan_Handle是SQL Server從完備的編譯計劃中提掏出的一個哈希值,它對當前的每一個已存在的編譯計劃是惟一的,可以被多次重用,可以被看作已編譯計劃的標識。假如批處置懲罰中的某個自力的語句被重編譯,但Plan_Handle仍舊保留,緣故原由便是我們前面評論爭論過的基于更正的優化策略。

批處置懲罰中的實際SQL 和記娛樂安卓下載和文本或工具被存儲在別的一個緩存(SQL Manager,簡稱SQLMGR)中。與批處置懲罰相關的T-SQL文本,包括所有注釋,被存儲在它的項(entries)。緩存在SQLMGR的T-SQL文本可以經由過程sql_Hanlde從數據值中提掏出來。SQL_Handle包孕一個完備批處置懲罰文本的哈希值,由于它對某個批處置懲罰是惟一的,因而,SQL_Handle可以看作SQLMGR批處置懲罰文本的一個標識。

任何定義的T-SQL批處置懲罰,有相同的SQL_Handle值,但未必有相同的Plan_Handle。假如緩存鍵是的任何值改變,我們在計劃緩存中獲得一個新的plan_Handle。

我們可以在sys.dm_exec_cached_plans視圖中,很輕易獲得sql_Handle的值,從sys.dm_exec_cached和記娛樂安卓下載和_plan_atrributes函數獲取一個特定的plan_Handle,如下語句:

SELECT plan_handle, pvt.set_options, pvt.object_id, pvt.sql_handle

FROM (SELECT plan_handle, epa.attribute, epa.value

FROM sys.dm_exec_cached_plans

OUTER APPLY sys.dm_exec_plan_attributes(plan_handle) AS epa

WHERE cacheobjtype = 'Compiled Plan'

) AS ecpa

PIVOT (MAX(ecpa.value) FOR ecpa.attribute

IN ("set_options", "object_id", "sql_handle")) AS pvt;

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

建体彩网
快乐12复式玩法介绍 浙江体彩排列三开奖号码查询 扑克牌接龙 意甲雪缘园 尚合彩票安全吗 赚钱的乐趣3366小游戏 内蒙古快3开奖结果走势 移动棋牌五子棋 体彩大乐透开奖直播造假 围棋在线对战