A. 交互式配置
> 创建命名缓冲区 (新创建的命名缓冲区从缺省缓冲区default data cache中分配空间)
每次执行sp_cacheconfig或sp_poolconfig时,SQL SERVER都将新的缓冲区或缓冲池信
息写入配置文件中并将文件的旧版本拷贝到一个备份文件中,给出备份文件名的信息被
送至错误日志.
创建一个新的名为pubs_cache的10M缓冲区指令如下,大小单位除M外,还可为P页,K,G,
(默认为K).该指令将改变系统表并将新值写入配置文件但暂不激活缓冲区,要使其生效
须重启SQL SERVER.
sp_cacheconfig pubs_cache,"10M"
在重启SQL SERVER使新值生效前,可先用sp_cacheconfig "pubs_cache"查看配置信息
如下,其中的status列值为pend/act说明该缓冲区的配置是挂起的,要待重启后生效,故
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
重启后再允许不带缓冲区名参数的sp_cacheconfig,则信息改变如下,可见pubs_cache
已被激活,默认缓冲区从其空间中分出了10M给该缓冲区.可利用sp_cacheconfig过程设置
默认数据缓冲区的最小值,该部分空间将被锁定给默认数据缓冲区.例如设置默认数据缓
冲区大小最少不低于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, Typeefault
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 \
若要保留一个只用于事务日志的缓冲区的类型,可以将缓冲区的类型设为"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"
> 缓冲区悃绑操作
系统管理员把数据缓冲区分成独立的命名数据缓冲区后,可将数据库对象捆绑到这
些缓冲区上,以控制数据库,表和索引在






