sp; ------- --------- ----------- --------
2KB 512KB 0.00MB 10.00MB \
若要保留一个只用于事务日志的缓冲区的类型,可以将缓冲区的类型设为"logonly",
如创建"logonly"类型的pubs_log缓冲区为sp_cacheconfig pubs_log,"7M","logonly",
下示为该缓冲区在重启前的状态.
Cache Name Status Type Config Value Run value
---------------- ------ ------ ---------------- -------------
pubs_cache pend/act log only 7.00MB 0.00MB
-------------------------------
Total 7.00MB 0.00MB
创建命名缓冲区后一般都须将某些对象捆绑到该缓冲区上。若建立命名缓冲区后
未将任何对象捆绑到该命名缓冲区上,则该命名缓冲区所占内存将被浪费,因为任
何未指定缓冲区的对象都将缺省使用默认数据缓冲区default data cache.
>; 将数据缓冲区划分为缓冲池
建立数据缓冲区后,可将其划分成缓冲池,各不同的缓冲池具有不同的I/O大小,当
SQL SERVER进行大I/O操作时,可将许多页一次读入缓冲区中,故可提高I/O效率.这些
页总是被当作一个单元进行处理,它们共存于缓冲区中,作为一个单元被写到磁盘中.
缓冲池的页大小可为2K,4K,8K,16K,缓冲池的总大小不能低于512K.所有关于缓冲池
的配置都是动态的,无需重启SQL SERVER即可生效.SQL SERVER内2K页缓冲池的个数
必须保持一个合理的值,否则将会影响SQL SERVER性能,因为某些命令只能使用2K
的I/O块如disk init及某些dbcc命令。
在pubs_cache数据缓冲区中创建一个每页16K,总空间为7MB的缓冲池,指令如下.通
常,创建命名数据缓冲区时,其空间总是被默认划分为每页2K的缓冲池,创建其它页大
小的缓冲池时,该2K页缓冲池空间被部分分配给新缓冲池.下例中2K页大小的缓冲池
原共有10M空间,分配给7M给16K页的新缓冲池后,2K页缓冲池还剩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
在默认数据缓冲区中也可创建缓冲池,如创建16K缓冲池,空间大小为8M,则指令为:
sp_poolconfig "default data cache","8M","16K".
若要为一个数据库的事务日志创建缓冲区,应配置缓冲区中大部分空间来匹配日志
I/O的大小.默认值为4K,若没有4K的可用缓冲池,SQL SERVER就为日志使用2K的I/O.
日志I/O的大小可通过系统过程sp_logiosize来改变,每个数据库的日志I/O大小会在
SQL SERVER启动后的错误日志中报告,也可通过使用数据库和执行不带参数的过程
sp_logiosize来检查一个数据库的日志I/O大小.如为pubs_log缓冲区配置4K页大小
的缓冲池指令为sp_poolconfig pubs_log,"3M","4K",也可在默认数据缓冲区中创
建一个4K页缓冲池,以供未被捆绑至其它缓冲区的任何数据库的事务日志来使用:
sp_poolconfig "default data cache","2.5M","4K".
此外,可修改缓冲池大小,如从16K页I/O的缓冲池中取出1M空间增加到4K页I/O缓
冲池中:sp_poolconifg pub_cache,"1M","4K","16K"
>; 缓冲区悃绑操作
系统管理员把数据缓冲区分成独立的命名数据缓冲区后,可将数据库对象捆绑到这
些缓冲区上,以控制数据库,表和索引在内存的驻留.若建立命名缓冲区后未将任何对
象捆绑到该命名缓冲区上,则该命名缓冲区所占内存将被浪费,因为任何未指定缓
冲区的对象都将缺省使用默认数据缓冲区default data cache.为了将任何系统表,
包括事务日志syslogs捆绑至缓冲区中,数据库须处于单用户模式.对象被捆绑后立即
生效而无需重启SQL SERVER.注意,进行捆绑或删除捆绑操作时,SQL SERVER需锁定相
应对象,故


