3 .6 .5 優化Ad-Hoc工作負載

執行計劃生成后會存儲在plan cache中,以便重用,如果計劃緩存從來都沒有被重用 過,將會造成內存資源的浪費,這有可能是由于非參數化的Ad-hoc (即席查詢)引起的。 當執行代碼時,會產生一個hash值,用于匹配計劃緩存中的hash值,相同的hash值代表 語句是相同的。如果執行一個存儲過程,會按照存儲過程名來創建hash值,如果在存儲過 程之外執行代碼(Ad-hoc T-SQL),那么hash值會根據整個語句產生。你的代碼有一點點字 面上的改變,都會產生不同的hash值,導致計劃無法重用。當有大量Ad-hoc執行時,會 導致計劃緩存的膨脹。

針對這類問題,可以考慮使用存儲過程、函數或者參數化Ad-hoc,但是有時候的確沒 有辦法,必須使用非參數化的Ad-hoc。從 SQL Server 2008開始,引人了一個“針對即席 工作負荷進行優化”的選項,如圖3-9所示。

找到該選項的具體步驟是:右鍵實例,然后選擇“屬性",再選擇“高級",之后把圖3-9

箭頭處的False改成True。下面是針對該選項的官方解釋:

?

“針對即席工作負荷進行優化”選項用于提高包含許多一次性臨時批處理的工作負荷計

劃緩存的效率。如果該選項設置為True,則數據庫引擎將在首次編譯批處理時在計劃緩存 中存儲一個編譯的小計劃存根,而不是存儲完全編譯的計劃。在這種情況下,不會讓未重

復使用的編譯計劃填充計劃緩存,從而有助于緩解內存壓力。

編譯的計劃存根使數據庫引擎能夠識別此臨時批處理以前已經編譯過,但只存儲了編

譯計劃存根,因此當再次調用(編譯或執行)此批處理時,數據庫引擎會對此批處理進行編

譯,從計劃緩存中刪除編譯計劃存根并將完全編譯的計劃添加到計劃緩存中。

“針對即席工作負荷進行優化”設置為1 只會影響新計劃,而已在計劃緩存中的計

劃不受影響。

編譯計劃存根是sys.dm_exec_cached_plans目錄視圖顯示的cacheobjtype之一它具有

唯一的SQL句柄和計劃句柄。編譯計劃存根沒有與其關聯的執行計劃,并且查詢計劃句柄

不會返回XML顯示計劃。

可以用下面的腳本來查看緩存對象的對應內存數。

SELECT objtype AS 'Cached Object Type * , COUNT(*) AS 'Number of Plans', SUM(CAST{size_in_bytes AS BIGINT)) / 1024 / 1024 AS 'Plan Cache Size (MB)', AVG(usecounts) AS 'Avg Use Count * FROM sys.dm_exec_cached_plans GROUP BY objtype

在筆者計算機上的結果如圖3-10所示。

?

?在 沒 有 開 啟 上 面 選 項 的 系 統 中 ,Ad-hoc通 常 是 內 存 占 用 最 多 的 部 分 。所 以 從 SQL Server 2008開 始 ,建議開啟這個選項。

轉載于:https://www.cnblogs.com/zhouwansheng/p/9243933.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/451329.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/451329.shtml
英文地址,請注明出處:http://en.pswp.cn/news/451329.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LightOJ - 1422 (區間DP)

題意:有t組數據,對于每組,有n個聚會需要參加,下面依次是參加各個聚會需要的衣服編號,要求所需要的衣服一定穿在外面,在操作的時候,可以選擇穿上一件衣服或脫下一件衣服,脫下的衣服不…

python判斷字典,列表,元組為空的方法。

m1 []m2 ()m3 {}判斷他們為空的方法是什么? if m1:非空else:空if not m2: 空 else:非空False,0,,[],{},()都可以視為假

解決 JSP 頁面報錯 equal symbol expected

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1.報錯:org.apache.jasper.JasperException: /WEB-INF/jsp/op/settlement/spRateModify.jsp(368,110) equal symbol expecte…

表單隱藏域與display:none

有時候前端進行表單填寫是分步驟的,每一步的時候其他步驟相關的表單視圖不可見; 針對"不可見",以下有兩種處理方式: ①display:none 這種方式呢,比較簡單,就是將三個步驟分3個div&…

視頻領域的Instagram:Viddy用戶突破2600萬

北京時間5月9日消息,據TheNextWeb報道,視頻分享應用Viddy的注冊用戶數量已經達到2600萬,而上個月的用戶數量還是650萬。日均增長用戶超過50萬,成績斐然,投資者對Viddy目前的增長表示很滿意。 Viddy是如何達到這樣的成…

log 的 debug()、 error()、 info()方法的區別

軟件中總免不了要使用諸如 Log4net, Log4j, Tracer 等東東來寫日志,不管用什么,這些東東大多是大同小異的,一般都提供了這樣5個日志級別: Debug Info Warn Error Fatal 一個等級比一個高,但…

存儲容量(空間)換算公式(B、KB、MB、GB、TB、PB、EB)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 <strong>存儲容量&#xff1a;是該存儲設備上可以存儲數據的最大數量&#xff0c;通常使用千字節&#xff08;kb kilobyte&#x…

如何防止表單的重復提交

表單重復提交是在多用戶Web應用中最常見、帶來很多麻煩的一個問題。有很多的應用場景都會遇到重復提交問題&#xff0c;比如&#xff1a; (1)點擊提交按鈕兩次。 (2)點擊刷新按鈕。 (3)使用瀏覽器后退按鈕重復之前的操作&#xff0c;導致重復提交表單。 (4)使用瀏覽器歷史記錄重…

GDB調試精粹及使用實例

一&#xff1a;列文件清單 1&#xff0e; List (gdb) list line1,line2 二&#xff1a;執行程序 要想運行準備調試的程序&#xff0c;可使用run命令&#xff0c;在它后面可以跟隨發給該程序的任何參數&#xff0c;包括標準輸入和標準輸出說明符(<和>)和外殼通配符&a…

如何使用log.debug()

log4j是一個開源的日志&#xff0c;共分為六個等級&#xff1a;LOG、DEBUG、INFO、WARN、ERROR、和FATAL。 DEBUG是其中的一種日志級別。一般我們用這個方法的時候都是這樣的&#xff1a; if(log.isDebugEnabled()){log.debug("debug&#xff01;"); } 意思是&am…

寫給大數據開發初學者的話

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 導讀&#xff1a; 第一章&#xff1a;初識Hadoop 第二章&#xff1a;更高效的WordCount第三章&#xff1a;把別處的數據搞到Hadoop上第…

2018年7月份,python上傳自己的包庫到pypi官網的方法

最近pypi官網進行了更新&#xff0c;老的上傳網址作廢了。記錄下上傳到pypi的方法 0、去pypi官網注冊賬號&#xff0c;沒賬號是不可能上傳的&#xff0c;想想也是那不亂套了嗎&#xff0c;注冊后會收到一個郵件需要點擊然后重新登錄 1、目錄就是這樣 &#xff0c;我要上傳muli…

linux系統C語言學習總結

引言   盡管 C 語言問世已近 30 年&#xff0c;但它的魅力仍未減退。C 語言繼續吸引著眾多的開發者&#xff0c;他們為了編寫、移植或維護應用程序而必須學習新技能。   本文是為了滿足對C語言初學者或想提高自身C語言修為的開發人員的需要而寫的。希望對您的學習和工作有…

redis 刪除操作

Redis 鍵(key) Redis 鍵命令用于管理 redis 的鍵。 語法 Redis 鍵命令的基本語法如下&#xff1a; redis 127.0.0.1:6379> COMMAND KEY_NAME 實例 redis 127.0.0.1:6379> SET runoobkey redis OK redis 127.0.0.1:6379> DEL runoobkey (integer) 1 在以上實例中 DEL 是…

寫給大數據開發初學者的話2

見 : http://lxw1234.com/archives/2016/11/782.htm 如果你已經按照《寫給大數據開發初學者的話》中第一章和第二章的流程認真完整的走了一遍&#xff0c;那么你應該已經具備以下技能和知識點&#xff1a; 0和Hadoop2.0的區別&#xff1b;MapReduce的原理&#xff08;還是那個…

Pandas的結構和應用

Pandas處理以下三個數據結構 - 系列(Series)----一維ndarray   特點&#xff1a;帶有標簽&#xff0c;可以使用標簽作為索引&#xff0c;大小不能改變&#xff0c;內部數據可以改變。 屬性&#xff1a;與NumPy類似&#xff0c;多了一個軸標簽axis lables 數據…

JZOJ5857 【NOIP提高組模擬A組2018.9.8】沒有上司的舞會

題目 Description “那么真的有果爾德施坦因這樣一個人?”他問道。 “是啊&#xff0c;有這樣一個人&#xff0c;他還活著。至于在哪里&#xff0c;我就不知道了。” “那么那個密謀——那個組織?這是真的嗎?不是秘密警察的捏造吧?” “不是&#xff0c;這是真的。我們管…

python 中如何判斷list中是否包含某個元素

在python中可以通過in和not in關鍵字來判讀一個list中是否包含一個元素 theList [‘a’,’b’,’c’] if ‘a’ in theList: print ‘a in the list’ if ‘d’ not in theList: print ‘d is not in the list’

時間即財富:創業者浪費精力的八個錯誤

導讀&#xff1a;本文作者Jeff Miller是美食網頁應用Punchfork的創始人&#xff0c;同時也是DuckDuckGo、Ginzametrics、Art.sy、DataMinr以及Forkly的投資人。作者通過對自己創業初期一些錯誤選擇進行盤點&#xff0c;告訴讀者在創業初期應該學會選擇&#xff0c;因為在創業初…

寫給大數據開發初學者的話3

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 如果你已經按照《寫給大數據開發初學者的話2》中第三章和第四章的流程認真完整的走了一遍&#xff0c;那么你應該已經具備以下技能和知識…