optimize for ad hoc workloads 選項

optimize for ad hoc workloads 選項是用來針對包含許多使用一次特定批次的工作負載,改善計畫快取的效率。如果這個選項設定為 1,Database Engine 就會在首次編譯批次時,將小型已編譯計畫虛設常式 (而非完整的已編譯計畫) 儲存在計畫快取中。這會透過避免計畫快取填滿不重複使用的已編譯計畫,協助減輕記憶體不足的壓力。

已編譯計畫虛設常式可讓 Database Engine 辨識出這個特定批次先前已經編譯,但是只儲存已編譯計畫虛設常式,如此再次叫用 (編譯或執行) 這個批次時,Database Engine 就會編譯此批次、從計畫快取中移除已編譯計畫虛設常式,並且將完整的已編譯計畫加入至計畫快取。

optimize for ad hoc workloads 設定為 1 只會影響新的計畫。已經存在計畫快取中的計畫則不會受到影響。

已編譯計畫虛設常式是 sys.dm_exec_cached_plans 目錄檢視所顯示的其中一個 cacheobjtype。它具有唯一的 SQL 控制代碼和計畫控制代碼。已編譯計畫虛設常式沒有相關聯的執行計畫,因此查詢計畫控制代碼將不會傳回 XML 執行程序表。