2010-04-08
文章分類(lèi):數(shù)據(jù)庫(kù)
sybase內(nèi)存和緩沖區(qū)管理【網(wǎng)摘】
-------------------------------------
為SQL SERVER提供的可用內(nèi)存越多,SQL SERVER就有越多的資源使用于緩沖區(qū),即可減少服務(wù)器
從磁盤(pán)讀取數(shù)據(jù)以獲取靜態(tài)信息或編譯過(guò)程計(jì)劃的次數(shù)。調(diào)整SQL SERVER所占內(nèi)存可通過(guò)在服務(wù)器配
置文件中設(shè)置total memory參數(shù)進(jìn)行,該參數(shù)的值指定了SQL SERVER在啟動(dòng)時(shí)所需的內(nèi)存總量,如若
該值為10000頁(yè),則SQL SERVER在啟動(dòng)時(shí)就將試圖獲得10000*2K=19.5M的內(nèi)存,若不能滿(mǎn)足則啟動(dòng)失敗。
注意,若操作系統(tǒng)在進(jìn)程的整個(gè)生命周期中支持動(dòng)態(tài)內(nèi)存分配,則可在SQL SERVER啟動(dòng)后為其分配額
外的內(nèi)存。
SQL SERVER啟動(dòng)時(shí)將內(nèi)存分配給SQL SERVER可執(zhí)行代碼,SQL SERVER使用的靜態(tài)內(nèi)存,用戶(hù)可配
置參數(shù)占用的內(nèi)存及不駐留在緩存上的數(shù)據(jù)結(jié)構(gòu),剩余的內(nèi)存分配給兩種SQL SERVER緩沖區(qū)即:數(shù)據(jù)
緩沖區(qū)和過(guò)程緩沖區(qū)。兩緩沖區(qū)的大小對(duì)整個(gè)系統(tǒng)的性能影響很大,在一個(gè)開(kāi)發(fā)系統(tǒng)上可能要增加過(guò)多端
程緩沖區(qū)的專(zhuān)用內(nèi)存,而在一生產(chǎn)系統(tǒng)上則需減少過(guò)程緩沖區(qū)大小以便獲得更大的數(shù)據(jù)緩沖區(qū)。
1。 確定緩沖區(qū)大小
在total memory配置的總空間中,首先要除去可愛(ài)執(zhí)行代碼所占空間,其大小因平臺(tái)和版本
不同而異,可使用sp_configure查詢(xún)executable codesize參數(shù)的值得知,一般為3-4MB;其次需
除去內(nèi)部結(jié)構(gòu)所占空間,內(nèi)部結(jié)構(gòu)分成內(nèi)核結(jié)構(gòu)和服務(wù)器結(jié)構(gòu),亦可將此部分內(nèi)存看成靜態(tài)開(kāi)銷(xiāo)
和用戶(hù)配置參數(shù)占用兩個(gè)部分,前者大小不受用戶(hù)可配置參數(shù)的影響,一般為2-3MB,而后者即用
戶(hù)可配置參數(shù)的大小則取決于配置參數(shù)的類(lèi)型及其值的大小,包括number of user connections,
number of open databases,number of devices,number of open objects,number of locks等,
要得到這些用戶(hù)配置參數(shù)使用內(nèi)存大小的精確估計(jì),可調(diào)用不帶選項(xiàng)的sp_configure以顯示所有
參數(shù)和每個(gè)參數(shù)使用的內(nèi)存量,其和即是用戶(hù)配置參數(shù)所占用內(nèi)存。
除去上述占用,剩余內(nèi)存將以procedure cache percent配置參數(shù)的值按比例分配給過(guò)程緩沖
區(qū)和數(shù)據(jù)緩沖區(qū),例若值為20,即表示剩余內(nèi)存的20%分配給過(guò)程緩沖區(qū)而80%分配給數(shù)據(jù)緩沖區(qū)。
確定緩沖區(qū)大小的另一種方法是檢查SQL SERVE啟動(dòng)時(shí)寫(xiě)入SQL SERVER錯(cuò)誤日志的內(nèi)存信息,
其中準(zhǔn)確地說(shuō)明了分配給過(guò)程緩沖區(qū)和數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)量,以及多少個(gè)過(guò)程或其他編譯對(duì)象能
同時(shí)駐留在緩沖區(qū)中,如相關(guān)信息為:
server:Number of proc buffers assocated:556
server:Number of blocks left for proc headers:629
server:Memory allocated for the default data cache:4144kb
前兩行為過(guò)程緩沖區(qū)信息,過(guò)程緩沖區(qū)總大小是分配給過(guò)程緩沖區(qū)的內(nèi)存(第一行)及分配給過(guò)
程頭(即存放編譯對(duì)象如存儲(chǔ)過(guò)程的地方,根據(jù)被存儲(chǔ)對(duì)象的大小,可能需要一個(gè)或多個(gè)過(guò)程頭)
的內(nèi)存(第二行)之和,可存儲(chǔ)在過(guò)程緩沖區(qū)中的編譯對(duì)象受到此二者中較小者的限制。上述信息
中,第一行指明了分配給過(guò)程緩沖區(qū)的緩沖區(qū)數(shù)量為556,每個(gè)緩沖區(qū)大小為76B,故過(guò)程緩沖區(qū)
大小即為42256B,合21頁(yè);第二行則指明了分配給過(guò)程頭的空間為629頁(yè),由此可以得出,過(guò)程
緩沖區(qū)總大小為629+21=650頁(yè),合1.27M。
信息中第三行則指明了分配給默認(rèn)數(shù)據(jù)庫(kù)緩沖區(qū)的空間大小。此外,若配置了命名緩沖區(qū),則
相關(guān)信息還將包含每個(gè)命名緩沖區(qū)的信息,再加上這些命名緩沖區(qū)所占內(nèi)存大小即得到總的數(shù)據(jù)
緩沖區(qū)大小。欲知數(shù)據(jù)緩沖區(qū)大小還可通過(guò)sp_helpcache過(guò)程得到每個(gè)緩沖區(qū)和捆綁到這些緩沖
區(qū)中的對(duì)象以及與不同緩沖區(qū)大小相關(guān)的開(kāi)銷(xiāo)的詳細(xì)信息。
2。 緩沖區(qū)管理
數(shù)據(jù)緩沖區(qū)保存SQL SERVER當(dāng)前使用和最近使用過(guò)的數(shù)據(jù)頁(yè),索引頁(yè)和日志頁(yè).初裝SQL SERVER
時(shí),會(huì)產(chǎn)生一個(gè)默認(rèn)的數(shù)據(jù)緩沖區(qū).SQL SERVER允許系統(tǒng)管理員把數(shù)據(jù)緩沖區(qū)分成獨(dú)立的命名數(shù)據(jù)
緩沖區(qū),然后可把數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)對(duì)象捆綁到這些命名緩沖區(qū)上,以對(duì)緩沖區(qū)空間進(jìn)行更合理的組
織,控制數(shù)據(jù)庫(kù),表和索引在內(nèi)存的駐留.另外,系統(tǒng)管理員還可在緩沖區(qū)內(nèi)創(chuàng)建緩沖池,用于執(zhí)行
大塊的磁盤(pán)I/O,改善數(shù)據(jù)查詢(xún)性能,減少磁盤(pán)I/O.有關(guān)數(shù)據(jù)庫(kù)緩沖區(qū)的指令有:
sp_cacheconfig 創(chuàng)建或刪除命名緩沖區(qū),改變緩沖區(qū)的大小或類(lèi)型
sp_poolconfig 創(chuàng)建或刪除I/O緩沖池,并改變其大小
sp_bindeache 將數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)對(duì)象捆綁到緩沖區(qū)
sp_unbindcache 從一個(gè)緩沖區(qū)中取消對(duì)指定對(duì)象或數(shù)據(jù)庫(kù)的捆綁
sp_unbindcache_all 從一個(gè)緩沖區(qū)中取消所有對(duì)象的捆綁
sp_helpcache 報(bào)告有關(guān)數(shù)據(jù)緩沖區(qū)的小結(jié)信息,并顯示捆綁于緩沖區(qū)的數(shù)據(jù)庫(kù)和對(duì)象
sp_cachestrategy 報(bào)告有關(guān)為表,索引設(shè)置的緩沖區(qū)策略,禁止或重新允許先提或MRU策略
sp_logiosize 為日志改變默認(rèn)的I/O大小
sp_spaceused 估計(jì)表和索引大小或有關(guān)數(shù)據(jù)庫(kù)使用的空間量的信息
sp_estspace 估計(jì)表和索引的大小,給出表包含的行的數(shù)目
sp_help 報(bào)告表將捆綁于哪個(gè)緩沖區(qū)
sp_helpindex 報(bào)告索引將捆綁于哪個(gè)緩沖區(qū)
sp_helpdb 報(bào)告數(shù)據(jù)庫(kù)將捆綁于哪個(gè)緩沖區(qū)
setshowplanon 報(bào)告有關(guān)用于查詢(xún)的I/O大小和緩沖區(qū)的應(yīng)用策略
setstatisticsioon 報(bào)告為查詢(xún)進(jìn)行的讀操作數(shù)量
setprefetch on/off 允許或禁止某個(gè)會(huì)話(huà)的預(yù)先提取
(1) 查詢(xún)數(shù)據(jù)庫(kù)緩沖區(qū)的信息
查看默認(rèn)數(shù)據(jù)緩沖區(qū)的大小,可使用指令sp_cacheconfig "default data cache",顯示
結(jié)果如下,由兩部分構(gòu)成,上部分報(bào)告每個(gè)緩沖區(qū)中的內(nèi)存池配置信息并總計(jì)了所有配置緩
沖區(qū)的大小;下部分提供了每個(gè)緩沖區(qū)中的其他詳細(xì)信息.
第一部分輸出各列含義為:cache name為緩沖區(qū)名;status指示該緩沖區(qū)是否激活(值為
pend/act時(shí)表示該緩沖區(qū)剛建立,重啟后將被激活;值為active時(shí)表示該緩沖區(qū)目前正處于
激活狀態(tài);值為pend/del時(shí)表示該緩沖區(qū)處于激活狀態(tài),但在服務(wù)器重啟后將被刪除);type
指示緩沖區(qū)是否可以存儲(chǔ)數(shù)據(jù)("mixed")和日志頁(yè)("logonly"),只有默認(rèn)緩沖區(qū)才會(huì)有
"default"類(lèi)型,且默認(rèn)的數(shù)據(jù)緩沖區(qū)類(lèi)型不能改變,其他類(lèi)型緩沖區(qū)也不能改為"default";
config value顯示下次SQL SERVER重啟后緩沖區(qū)的大小,在此情況下,默認(rèn)緩沖區(qū)不能顯式
配置,故信息中其大小為0;run value顯示SQL SERVER目前使用的大小,對(duì)于默認(rèn)數(shù)據(jù)緩沖
區(qū),該值將作為未顯示配置到其他緩沖區(qū)中的所有數(shù)據(jù)緩沖區(qū)空間.
第二部分輸出各列含義為:IO size顯示緩沖池中的緩存大小,所有緩沖池缺省都分配2K
空間(有效空間大小為2K,4K,8K,16K);wash size指示緩沖池的刷洗區(qū)大小;config size和
run size顯示配置大小和目前使用的大小,該兩值在2K的緩沖池中是不同的(因?yàn)椴荒茱@式
配置其大小),而對(duì)于其他緩沖池,若試圖在緩沖池間移動(dòng)空間而一些空間又不能被釋放時(shí),
上述兩值也不同.
Cache Name Status Type Config Value Run value
---------------- ------ ------ ---------------- -------------
default data cache Active Default 0.00MB 59.36MB
-------------------------------
Total 0.00MB 59.36MB
===================================================================
Cache:default data cache, status:Active, Type:Default
Config Size:0.00MB, Run size:59.36MB
IO Size Wash Size Config Size Run Size
------- --------- ----------- --------
2KB 512KB 0.00MB 59.36MB
(2) 配置數(shù)據(jù)緩沖區(qū)
配置數(shù)據(jù)緩沖區(qū)有兩種途徑:一是使用過(guò)程sp_cacheconfig和sp_poolconfig進(jìn)行交互
式配置,二是編輯配置文件中的total memory參數(shù)后重啟使之生效.
A. 交互式配置
>; 創(chuàng)建命名緩沖區(qū) (新創(chuàng)建的命名緩沖區(qū)從缺省緩沖區(qū)default data cache中分配空間)
每次執(zhí)行sp_cacheconfig或sp_poolconfig時(shí),SQL SERVER都將新的緩沖區(qū)或緩沖池信
息寫(xiě)入配置文件中并將文件的舊版本拷貝到一個(gè)備份文件中,給出備份文件名的信息被
送至錯(cuò)誤日志.
創(chuàng)建一個(gè)新的名為pubs_cache的10M緩沖區(qū)指令如下,大小單位除M外,還可為P頁(yè),K,G,
(默認(rèn)為K).該指令將改變系統(tǒng)表并將新值寫(xiě)入配置文件但暫不激活緩沖區(qū),要使其生效
須重啟SQL SERVER.
sp_cacheconfig pubs_cache,"10M"
在重啟SQL SERVER使新值生效前,可先用sp_cacheconfig "pubs_cache"查看配置信息
如下,其中的status列值為pend/act說(shuō)明該緩沖區(qū)的配置是掛起的,要待重啟后生效,故
Config value(配置的值)和Run value(正在使用的值)不同.
Cache Name Status Type Config Value Run value
---------------- ------ ------ ---------------- -------------
pubs_cache pend/act mixed 10.00MB 00.00MB
-------------------------------
Total 10.00MB 00.00MB
重啟后再允許不帶緩沖區(qū)名參數(shù)的sp_cacheconfig,則信息改變?nèi)缦?可見(jiàn)pubs_cache
已被激活,默認(rèn)緩沖區(qū)從其空間中分出了10M給該緩沖區(qū).可利用sp_cacheconfig過(guò)程設(shè)置
默認(rèn)數(shù)據(jù)緩沖區(qū)的最小值,該部分空間將被鎖定給默認(rèn)數(shù)據(jù)緩沖區(qū).例如設(shè)置默認(rèn)數(shù)據(jù)緩
沖區(qū)大小最少不低于25M則指令為sp_cacheconfig "default data cache" "25M".
Cache Name Status Type Config Value Run value
---------------- ------ ------ ---------------- -------------
default data cache Active Default 0.00MB 49.28MB
pubs_cache Active mixed 10.00MB 10.00MB
-------------------------------
Total 10.00MB 59.28MB
===================================================================
Cache:default data cache, status:Active, Type:Default
Config Size:0.00MB, Run size:49.28MB
IO Size Wash Size Config Size Run Size
------- --------- ----------- --------
2KB 512KB 0.00MB 49.28MB
===================================================================
Cache:pubs_cache, status:Active, Type:mixed
Config Size:10.00MB, Run size:10.00MB
IO Size Wash Size Config Size Run Size
------- --------- ----------- --------
2KB 512KB 0.00MB 10.00MB \
若要保留一個(gè)只用于事務(wù)日志的緩沖區(qū)的類(lèi)型,可以將緩沖區(qū)的類(lèi)型設(shè)為"logonly",
如創(chuàng)建"logonly"類(lèi)型的pubs_log緩沖區(qū)為sp_cacheconfig pubs_log,"7M","logonly",
下示為該緩沖區(qū)在重啟前的狀態(tài).
Cache Name Status Type Config Value Run value
---------------- ------ ------ ---------------- -------------
pubs_cache pend/act log only 7.00MB 0.00MB
-------------------------------
Total 7.00MB 0.00MB
創(chuàng)建命名緩沖區(qū)后一般都須將某些對(duì)象捆綁到該緩沖區(qū)上。若建立命名緩沖區(qū)后
未將任何對(duì)象捆綁到該命名緩沖區(qū)上,則該命名緩沖區(qū)所占內(nèi)存將被浪費(fèi),因?yàn)槿?
何未指定緩沖區(qū)的對(duì)象都將缺省使用默認(rèn)數(shù)據(jù)緩沖區(qū)default data cache.
>; 將數(shù)據(jù)緩沖區(qū)劃分為緩沖池
建立數(shù)據(jù)緩沖區(qū)后,可將其劃分成緩沖池,各不同的緩沖池具有不同的I/O大小,當(dāng)
SQL SERVER進(jìn)行大I/O操作時(shí),可將許多頁(yè)一次讀入緩沖區(qū)中,故可提高I/O效率.這些
頁(yè)總是被當(dāng)作一個(gè)單元進(jìn)行處理,它們共存于緩沖區(qū)中,作為一個(gè)單元被寫(xiě)到磁盤(pán)中.
緩沖池的頁(yè)大小可為2K,4K,8K,16K,緩沖池的總大小不能低于512K.所有關(guān)于緩沖池
的配置都是動(dòng)態(tài)的,無(wú)需重啟SQL SERVER即可生效.SQL SERVER內(nèi)2K頁(yè)緩沖池的個(gè)數(shù)
必須保持一個(gè)合理的值,否則將會(huì)影響SQL SERVER性能,因?yàn)槟承┟钪荒苁褂?K
的I/O塊如disk init及某些dbcc命令。
在pubs_cache數(shù)據(jù)緩沖區(qū)中創(chuàng)建一個(gè)每頁(yè)16K,總空間為7MB的緩沖池,指令如下.通
常,創(chuàng)建命名數(shù)據(jù)緩沖區(qū)時(shí),其空間總是被默認(rèn)劃分為每頁(yè)2K的緩沖池,創(chuàng)建其它頁(yè)大
小的緩沖池時(shí),該2K頁(yè)緩沖池空間被部分分配給新緩沖池.下例中2K頁(yè)大小的緩沖池
原共有10M空間,分配給7M給16K頁(yè)的新緩沖池后,2K頁(yè)緩沖池還剩3M空間.
>;sp_poolconfig pubs_cache,"7M","16K"
>;go
>;sp_cacheconfig pubs_cache
Cache Name Status Type Config Value Run value
---------------- ------ ------ ---------------- -------------
pubs_cache Active mixed 10.00MB 10.00MB
-------------------------------
Total 10.00MB 10.00MB
===================================================================
Cache:pubs_cache, status:Active, Type:mixed
Config Size:10.00MB, Run size:10.00MB
IO Size Wash Size Config Size Run Size
------- --------- ----------- --------
2KB 512KB 0.00MB 3.00MB
16KB 1424KB 7.00MB 7.00MB
在默認(rèn)數(shù)據(jù)緩沖區(qū)中也可創(chuàng)建緩沖池,如創(chuàng)建16K緩沖池,空間大小為8M,則指令為:
sp_poolconfig "default data cache","8M","16K".
若要為一個(gè)數(shù)據(jù)庫(kù)的事務(wù)日志創(chuàng)建緩沖區(qū),應(yīng)配置緩沖區(qū)中大部分空間來(lái)匹配日志
I/O的大小.默認(rèn)值為4K,若沒(méi)有4K的可用緩沖池,SQL SERVER就為日志使用2K的I/O.
日志I/O的大小可通過(guò)系統(tǒng)過(guò)程sp_logiosize來(lái)改變,每個(gè)數(shù)據(jù)庫(kù)的日志I/O大小會(huì)在
SQL SERVER啟動(dòng)后的錯(cuò)誤日志中報(bào)告,也可通過(guò)使用數(shù)據(jù)庫(kù)和執(zhí)行不帶參數(shù)的過(guò)程
sp_logiosize來(lái)檢查一個(gè)數(shù)據(jù)庫(kù)的日志I/O大小.如為pubs_log緩沖區(qū)配置4K頁(yè)大小
的緩沖池指令為sp_poolconfig pubs_log,"3M","4K",也可在默認(rèn)數(shù)據(jù)緩沖區(qū)中創(chuàng)
建一個(gè)4K頁(yè)緩沖池,以供未被捆綁至其它緩沖區(qū)的任何數(shù)據(jù)庫(kù)的事務(wù)日志來(lái)使用:
sp_poolconfig "default data cache","2.5M","4K".
此外,可修改緩沖池大小,如從16K頁(yè)I/O的緩沖池中取出1M空間增加到4K頁(yè)I/O緩
沖池中:sp_poolconifg pub_cache,"1M","4K","16K"
>; 緩沖區(qū)悃綁操作
系統(tǒng)管理員把數(shù)據(jù)緩沖區(qū)分成獨(dú)立的命名數(shù)據(jù)緩沖區(qū)后,可將數(shù)據(jù)庫(kù)對(duì)象捆綁到這
些緩沖區(qū)上,以控制數(shù)據(jù)庫(kù),表和索引在內(nèi)存的駐留.若建立命名緩沖區(qū)后未將任何對(duì)
象捆綁到該命名緩沖區(qū)上,則該命名緩沖區(qū)所占內(nèi)存將被浪費(fèi),因?yàn)槿魏挝粗付ň?
沖區(qū)的對(duì)象都將缺省使用默認(rèn)數(shù)據(jù)緩沖區(qū)default data cache.為了將任何系統(tǒng)表,
包括事務(wù)日志syslogs捆綁至緩沖區(qū)中,數(shù)據(jù)庫(kù)須處于單用戶(hù)模式.對(duì)象被捆綁后立即
生效而無(wú)需重啟SQL SERVER.注意,進(jìn)行捆綁或刪除捆綁操作時(shí),SQL SERVER需鎖定相
應(yīng)對(duì)象,故相應(yīng)對(duì)象上的其它操作可能有延遲.此外,可不刪除現(xiàn)有的捆綁而重新捆綁
對(duì)象.另外,當(dāng)被捆綁對(duì)象上有臟的讀活動(dòng)或有打開(kāi)的游標(biāo)時(shí),捆綁或刪除捆綁的操作
將不能進(jìn)行.
1>;sp_dboption pubs2,single,true 置pubs2庫(kù)為單用戶(hù)狀態(tài)
2>;use pubs2
3>;checkpoint
4>;go 準(zhǔn)備進(jìn)行數(shù)據(jù)庫(kù)對(duì)象的捆綁。注意,捆綁對(duì)象須在對(duì)象所在的庫(kù)中進(jìn)行。
>;sp_bindcache pubs_cache,pubs2,titles
將pubs2庫(kù)中的表titles捆綁至緩沖區(qū)pubs_cache.
>;sp_bindcache pubs_cache,pubs2,titles.titleind
在titles上捆綁索引,并將pubs2庫(kù)中的表titles捆綁至緩沖區(qū)pubs_cache.
>;sp_bindcache pubs_cache,pubs2,"hj.sale_east"
將pubs2庫(kù)中用戶(hù)hj的表sale_east捆綁至緩沖區(qū)pubs_cache.
>;sp_bindcache pubs_log,pubs2,syslogs
將pubs2庫(kù)的事務(wù)日志syslogs捆綁至緩沖區(qū)pubs_log.
>;sp_bindcache pubs_cache,pubs2,au_pix,"text only"
表的text和image列存儲(chǔ)在一個(gè)單獨(dú)的數(shù)據(jù)結(jié)構(gòu)中,若將此表捆綁至緩沖區(qū),需加
"text"參數(shù).
1>;sp_dboption pubs3,single,true 置pubs3庫(kù)為單用戶(hù)狀態(tài)
2>;use pubs3
3>;checkpoiot
4>;use master
5>;go 準(zhǔn)備進(jìn)行數(shù)據(jù)庫(kù)的捆綁,注意,捆綁數(shù)據(jù)庫(kù)須在master庫(kù)中進(jìn)行。
>;sp_bindcache tempdb_cache,tempdb
將數(shù)據(jù)庫(kù)tempdb捆綁至緩沖區(qū)tempdb_cache。
注意,被捆綁到日志緩沖區(qū)上的對(duì)象只能是syslogs表。
可通過(guò)sp_helpcache過(guò)程查詢(xún)所有或指定緩沖區(qū)及其中被捆綁對(duì)象的捆綁信息.如下
例示,其中status列報(bào)告緩沖區(qū)的捆綁是("V")否("I")有效.若數(shù)據(jù)庫(kù)或?qū)ο蟊焕壷辆?
沖池而該緩沖區(qū)已被刪除,則捆綁信息仍保留在系統(tǒng)表中但緩沖區(qū)捆綁被標(biāo)記無(wú)效,所有
無(wú)效的捆綁對(duì)象均使用默認(rèn)的數(shù)據(jù)庫(kù)緩沖區(qū).若隨后用與被刪除的緩沖區(qū)相同的名字創(chuàng)建
了另一個(gè)緩沖區(qū),則當(dāng)該緩沖區(qū)通過(guò)重啟SQL SERVER而被激活時(shí),上述捆綁又將變?yōu)橛行?
刪除緩沖區(qū)捆綁可用兩個(gè)過(guò)程:sp_unbindcache用于刪除緩沖區(qū)中對(duì)一個(gè)實(shí)體的捆綁;
sp_unbindcache_all則用于刪除緩沖區(qū)中對(duì)所有對(duì)象的捆綁,但若捆綁至緩沖區(qū)的數(shù)據(jù)庫(kù)
超過(guò)8個(gè),或數(shù)據(jù)庫(kù)的對(duì)象超過(guò)8個(gè),就不能使用sp_unbindcache_all,此情況下,必須使用
sp_unbindcache刪除單個(gè)的數(shù)據(jù)庫(kù)或?qū)ο?使捆綁的數(shù)據(jù)庫(kù)不超過(guò)8個(gè).此外,當(dāng)刪除緩沖
區(qū)對(duì)一個(gè)對(duì)象的捆綁時(shí),內(nèi)存中所有當(dāng)前的頁(yè)都被從緩沖區(qū)中清除.
>;sp_unbindcache pubs2
刪除對(duì)數(shù)據(jù)庫(kù)pubs2的捆綁
>;sp_unbindcache pubs2,titles
刪除對(duì)pubs2庫(kù)中對(duì)titles表的捆綁
>;sp_unbindcache pubs2,titles,titleidind
鏟除對(duì)pubs2庫(kù)中titles表上titleidind索引的捆綁.
>; 改變命名數(shù)據(jù)緩沖區(qū)大小
可通過(guò)sp_cacheconfig指定一個(gè)新的空間以增加或減少指定緩沖區(qū)的大小,所有新增空
間都將從缺省數(shù)據(jù)緩沖區(qū)default data cache內(nèi)的2K緩沖池中被加到指定緩沖區(qū)內(nèi)的2K
頁(yè)緩沖池中,所有減少的空間亦從指定緩沖區(qū)內(nèi)的2K頁(yè)緩沖池中被釋放到缺省數(shù)據(jù)庫(kù)緩沖
區(qū)default data cache內(nèi)的2K緩沖池中.
>;sp_cacheconfig pubs_cache
Cache Name Status Type Config Value Run value
---------------- ------ ------ ---------------- -------------
pubs_cache Active mixed 10.00MB 10.00MB
-------------------------------
Total 10.00MB 10.00MB
===================================================================
Cache:pubs_cache, status:Active, Type:mixed
Config Size:10.00MB, Run size:10.00MB
IO Size Wash Size Config Size Run Size
------- --------- ----------- --------
2KB 720KB 0.00MB 3.00MB
4KB 1024KB 4.00MB 4.00MB
16KB 1424KB 3.00MB 3.00MB
現(xiàn)以sp_cacheconfig pubs_cache,"20M"后重啟,則改變?nèi)缦?
>;sp_cacheconfig pubs_cache
Cache Name Status Type Config Value Run value
---------------- ------ ------ ---------------- -------------
pubs_cache Active mixed 20.00MB 20.00MB
-------------------------------
Total 20.00MB 20.00MB
===================================================================
Cache:pubs_cache, status:Active, Type:mixed
Config Size:20.00MB, Run size:20.00MB
IO Size Wash Size Config Size Run Size
------- --------- ----------- --------
2KB 512KB 0.00MB 13.00MB
4KB 1024KB 4.00MB 4.00MB
16KB 1424KB 3.00MB 3.00MB
返回pubs_log緩沖區(qū)報(bào)告:
>;sp_cacheconfig pubs_log
Cache Name Status Type Config Value Run value
---------------- ------ ------ ---------------- -------------
pubs_log Active log only 7.00MB 7.00MB
-------------------------------
Total 7.00MB 7.00MB
===================================================================
Cache:pubs_log, status:Active, Type:log only
Config Size:7.00MB, Run size:7.00MB
IO Size Wash Size Config Size Run Size
------- --------- ----------- --------
2KB 512KB 0.00MB 4.00MB
4KB 1024KB 3.00MB 3.00MB
再運(yùn)行以指令sp_cacheconfig pubs_log,"6M"后重啟,則改變?yōu)?
>;sp_cacheconfig pubs_log
Cache Name Status Type Config Value Run value
---------------- ------ ------ ---------------- -------------
pubs_log Active log only 6.00MB 6.00MB
-------------------------------
Total 6.00MB 6.00MB
===================================================================
Cache:pubs_log, status:Active, Type:log only
Config Size:6.00MB, Run size:6.00MB
IO Size Wash Size Config Size Run Size
------- --------- ----------- --------
2KB 512KB 0.00MB 3.00MB
4KB 1024KB 3.00MB 3.00MB
欲徹底刪除一個(gè)數(shù)據(jù)緩沖區(qū),將其大小復(fù)位為0可使用sp_cacheconfig pubs_log,"0".
則將緩沖區(qū)狀態(tài)變?yōu)?quot;pend/del",重啟SQL SERVER后此改變生效.在執(zhí)行該操作前,緩沖
區(qū)需保持激活狀態(tài),捆綁至緩沖區(qū)的所有對(duì)象仍使用該緩沖區(qū)執(zhí)行I/O操作.若有對(duì)象捆
綁于待刪除的數(shù)據(jù)緩沖區(qū),則SQL SERVER重啟后,緩沖區(qū)的捆綁被標(biāo)記為無(wú)效,所有無(wú)效
緩沖區(qū)捆綁的對(duì)象都使用默認(rèn)數(shù)據(jù)緩沖區(qū).當(dāng)捆綁被標(biāo)記為無(wú)效時(shí),警告信息將被輸入
錯(cuò)誤日志.注意,默認(rèn)數(shù)據(jù)緩沖區(qū)不能刪除.