改进共享服务器的性能

·    共享服务器环境下的性能调整方向是,在现有的资源配置下支持更多的用户,而不是一定要如何提高系统的吞吐量或响应时间;

·    性能问题表现在以下三个方面:相关的SGA组件配置不充分,共享服务器进程太少,调度进程太少;

·    相关的SGA组件配置

?nbsp;   共享服务器配置下,用户的会话与游标信息是存放于UGA中的(专用服务器配置下存放于PGA中),UGA通常存在于共享池中,共享池的主要功能是用来缓存SQL语句及数据字典的,这就要求共享池有足够的空间,不致于因UGA的消耗而降低系统的库缓存命中率和字典缓存命中率;

?nbsp;   下面的查询语句可以看到系统UGA占用的空间,这个空间占用是动态变化的:

Select Sum(s.Value) "Total UGA Bytes"
From V$sesstat s, V$statname n
Where s.Statistic# = n.Statistic#
And n.Name = 'session uga memory max';
?nbsp;   在配置了大池后,部分UGA数据会从SGA中移到大池中;
·    有三种改变共享服务器进程数量的方法:
?nbsp;   PMON后台进程能够根椐系统的负载动态增减服务器进程的数量;
?nbsp;   管理员动态增加服务器进程的数量:Alter system set shared_servers = xx;
?nbsp;   管理员手工增加服务器进程的数量:更改初始参数shared_servers的值,再重启;
·    改变调度进程数量的方法只有两种
?nbsp;   管理员动态增加调度进程的数量:Alter system set dispatchers = ‘tcp,5’;
?nbsp;   管理员手工增加调度进程的数量:更改初始参数dispatchers的值,再重启;
?nbsp;   用户进程在其生命周期里只和一个调度进程发生联系,新加入的调度进程只能为在它之后产生的用户进程服务;
?nbsp;   Oracle推荐配置是,每个调度进程服务250个左右的并发用户连接;
第六章 调整SGA的其它区域 6.大池的概念
大池的概念
·    共享池除了用于缓存SQL外,还有用于容纳下面的一些特殊用途的数据:DBW0附属进程,UGA,RMAN,Parallel Query,当这些选项被使用后,共享池的命中率可能会下降很多,为了解决这个问题,Oracle提供一个新的内存区域来存放这些数据,这就是大池;
·    用LARGE_POOL_SIZE这个参数来配置大池,这个参数默认值是零,可选值在600K到2G之间,一旦配置了大池,Oracle会自动使用大池来缓存上面提到的数据;
·    PARALLEL_AUTOMATIC_TUNING置为真时,大池的空间是动态的,由系统控制;
·    可以使用下面的查询看到大池已使用和未使用的内存:Select * From V$sgastat Where Pool = 'large pool';

·    持续观察上面的查询,如果发现未使用内存很大或者不断增加,表示大池可能分配了太多的内存,如果未使用内存很小或者不断减少,表示可能需要加大大池的内存。