Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90988813
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Sybase

2008-05-17 21:45:33

   来源:

3、将数据缓冲区划分为缓冲池

建立数据缓冲区后,可将其划分成缓冲池,各不同的缓冲池具有不同的I/O大小,当SQL Server进行大I/O时,可将许多页一次读入缓冲区中,故可I/O效率。这些页总是被当作一个单元进行处理,它们共存于缓冲区中,作为一个单元被写到磁盘中。缓冲池的页大小可为2KB,4KB,8KB,16KB,缓冲池的总大小不能低于512KB。所有关于缓冲池的配置都是动态的,无需重启SQL Server即可生效。SQL Server内2KB页缓冲池的个数必须保持一个合理的值,否则将会影响SQL Server,因为某些命令只能使用2K的I/O块如disk init及某些dbcc命令。

在pubs_cache数据缓冲区中创建一个每页16KB,总空间为7MB的缓冲池,指令如下。通常,创建命名数据缓冲区时,其空间总是被默认划分为每页2KB的缓冲池,创建其它页大小的缓冲池时,该2KB页缓冲池空间被部分分配给新缓冲池。下例中2KB页大小的缓冲池原共有10MB空间,分配给7MB给16KB页的新缓冲池后,2KB页缓冲池还剩3MB空间。

>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

在默认数据缓冲区中也可创建缓冲池,如创建16KB缓冲池,空间大小为8MB,则指令为:

sp_poolconfig "default data cache","8M","16K"。

若要为一个数据库的事务日志创建缓冲区,应配置缓冲区中大部分空间来匹配日志I/O的大小。默认值为4KB,若没有4KB的可用缓冲池,SQL Server就为日志使用2KB的I/O。 日志I/O的大小可通过系统过程sp_logiosize来改变,每个数据库的日志I/O大小会在SQL Server启动后的错误日志中报告,也可通过使用数据库和执行不带参数的过程。

sp_logiosize来检查一个数据库的日志I/O大小。如为pubs_log缓冲区配置4KB页大小的缓冲池指令为sp_poolconfig pubs_log,"3MB","4KB",也可在默认数据缓冲区中创建一个4KB页缓冲池,以供未被捆绑至其它缓冲区的任何数据库的事务日志来使用:

sp_poolconfig "default data cache","2.5MB","4KB"。

此外,可修改缓冲池大小,如从16K页I/O的缓冲池中取出1MB空间增加到4KB页I/O缓冲池中:sp_poolconifg pub_cache,"1MB","4KB","16KB"

4、缓冲区悃绑操作

系统管理员把数据缓冲区分成独立的命名数据缓冲区后,可将数据库对象捆绑到这些缓冲区上,以控制数据库,表和索引在内存的驻留。若建立命名缓冲区后未将任何对象捆绑到该命名缓冲区上,则该命名缓冲区所占内存将被浪费,因为任何未指定缓冲区的对象都将缺省使用默认数据缓冲区default data cache。为了将任何系统表,包括事务日志syslogs捆绑至缓冲区中,数据库须处于单用户模式。对象被捆绑后立即生效而无需重启SQL Server。注意,进行捆绑或删除捆绑操作时,SQL Server需锁定相应对象,故相应对象上的其它操作可能有延迟。此外,可不删除现有的捆绑而重新捆绑对象。另外,当被捆绑对象上有脏的读或有打开的游标时,捆绑或删除捆绑的操作将不能进行。

1>sp_dboption pubs2,single,true 置pubs2库为单用户状态 
2>use pubs2 
3>checkpoint 
4>go

(准备进行数据库对象的捆绑。注意,捆绑对象须在对象所在的库中进行)。

>sp_bindcache pubs_cache,pubs2,titles /将pubs2库中的表titles捆绑至缓冲区pubs_cache。

>sp_bindcache pubs_cache,pubs2,titles。titleind /在titles上捆绑索引,并将pubs2库中的表titles捆绑至缓冲区pubs_cache。

>sp_bindcache pubs_cache,pubs2,"hj。sale_east" /将pubs2库中用户hj的表sale_east捆绑至缓冲区pubs_cache。

>sp_bindcache pubs_log,pubs2,syslogs /将pubs2库的事务日志syslogs捆绑至缓冲区pubs_log。

>sp_bindcache pubs_cache,pubs2,au_pix,"text only" /表的text和image列存储在一个单独的数据结构中,若将此表捆绑至缓冲区,需加“text”参数。

1>sp_dboption pubs3,single,
true 置pubs3库为单用户状态 
2>use pubs3 
3>checkpoiot 
4>use master 
5>go 
准备进行数据库的捆绑,注意,捆绑数据库须在master库中进行。 
>sp_bindcache tempdb_cache,tempdb

将数据库tempdb捆绑至缓冲区tempdb_cache。

注意,被捆绑到日志缓冲区上的对象只能是syslogs表。

可通过sp_helpcache过程查询所有或指定缓冲区及其中被捆绑对象的捆绑。如下例示,其中status列报告缓冲区的捆绑是(“V”)否(“I”)有效。若数据库或对象被捆绑至缓冲池而该缓冲区已被删除,则捆绑信息仍保留在系统表中但缓冲区捆绑被标记无效,所有无效的捆绑对象均使用默认的数据库缓冲区。若随后用与被删除的缓冲区相同的名字创建了另一个缓冲区,则当该缓冲区通过重启SQL Server而被激活时,上述捆绑又将变为有效。删除缓冲区捆绑可用两个过程:sp_unbindcache用于删除缓冲区中对一个实体的捆绑;sp_unbindcache_all则用于删除缓冲区中对所有对象的捆绑,但若捆绑至缓冲区的数据库超过8个,或数据库的对象超过8个,就不能使用sp_unbindcache_all,此情况下,必须使用sp_unbindcache删除单个的数据库或对象,使捆绑的数据库不超过8个。此外,当删除缓冲区对一个对象的捆绑时,内存中所有当前的页都被从缓冲区中清除。

>sp_unbindcache pubs2 /删除对数据库pubs2的捆绑。

>sp_unbindcache pubs2,titles /删除对pubs2库中对titles表的捆绑。

>sp_unbindcache pubs2,titles,titleidind /铲除对pubs2库中titles表上titleidind索引的捆绑。

可通过sp_cacheconfig指定一个新的空间以增加或减少指定缓冲区的大小,所有新增空间都将从缺省数据缓冲区default data cache内的2KB缓冲池中被加到指定缓冲区内的2K页缓冲池中,所有减少的空间亦从指定缓冲区内的2KB页缓冲池中被到缺省数据库缓冲区default data cache内的2KB缓冲池中。

>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

现以sp_cacheconfig pubs_cache,“20MB”后重启,则改变如下:

>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缓冲区报告:

>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

再运行以指令sp_cacheconfig pubs_log,“6MB”后重启,则改变为:

>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

欲彻底删除一个数据缓冲区,将其大小复位为0可使用sp_cacheconfig pubs_log,“0”。则将缓冲区状态变为“pend/del”,重启SQL Server后此改变生效。在执行该操作前,缓冲区需保持激活状态,捆绑至缓冲区的所有对象仍使用该缓冲区执行I/O操作。若有对象捆绑于待删除的数据缓冲区,则SQL Server重启后,缓冲区的捆绑被标记为无效,所有无效缓冲区捆绑的对象都使用默认数据缓冲区。当捆绑被标记为无效时,警告信息将被输入错误日志。注意,默认数据缓冲区不能删除。

阅读(904) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~