关于“专用服务器进程”和“多线程服务器”

2/9/2008来源:Oracle教程人气:5341

专用服务器进程:
用户进程和服务器进程是彼此分隔的。
每一个用户进程都有它自己的服务器进程。
在用户和服务器进程间存在一比一的比率。
甚至当用户进程没有作出数据库请求时专用服务器也是存在的只是处于空闲状态。
往往称专用服务器进程为影子进程因为它只代表一个用户进程。

多线程服务器(MTS):
在线事务处理进程环境(OLTP) 中,服务器进程有90% 或更长的连接时间处于空闲状态。
MTS 提高服务器效率因为任何服务器都能处理传入的请求而不必等待某个特定的服务器去处理请求。
服务器数量相同的情况下使用MTS 可以比使用专用服务器配置支持更多的用户。因为MTS 体系结构中的用户共享服务器进程于是可以配置较少的服务器进程。
通过减少所需的服务器进程数量,MTS 体系结构可以减少内存利用率。
*适用于oltp服务器中,对于DSS和数据仓库等应用不建议使用。
何时使用专用服务器?
提交批处理作业(期望只存在及很少的或不存在空闲时间)。
连接服务器治理器以进行启动、关闭或执行恢复。
作为内部连接。
假如计算机有大量的内存来支持专用服务器,就应该使用这种配置。这种情况下性能有可能更好。

在SGA跟PGA方面的使用异同:
当使用专用服务器时,用户会话数据将保存在PGA 中。
当使用MTS时,数据将保存在SGA中。假如要支持多个用户,需要增加每次连接的Shared_pool_size.

配置MTS:
若要配置多线程服务器,需要为例程编辑初始化参数文件。在设置了这些初始化参数后,重新启动例程。
多线程服务器体系结构需要Net8。以多线程服务器作为目标的用户进程必须通过Net 8 进行连接,即使客户端与服务器都在同一台机器上。


8i所使用的几个参数:
mts_dispatchers用于配置当Instance启动的时侯启用的Dispatcher的数量、及Dispatcher所响应的协议,它是一个动态的参数,可以用Alter system进行动态修定,它没有默认值。mts_max_dispatchers:用于指定同时运行的Dispatcher进程的最大数量,对于大部分的应用,每250个连接启用一个Dispatcher可以获得较好的性能。默认值是5或所配置的Dispatcher的数量。
mts_servers用于指定当Instance启动时你想启用的服务进程的数量,它是一个动态参数,可以用Alter systme动态修定。
mts_max_servers用于指定同时进行的共享的库的服务进程的数量,假如你的系统经常出现死锁,应该适当的增加这个值。
mts_service:设为SID
mts_listener_address:TNS监听的地址
9i所使用的几个参数:
dispatchers 等同于8i中的mts_dispatchers参数max_dispatchers   等同于8i中的mts_max_dispatchers参数shared_servers     等同于8i中的mts_server参数max_shared_servers  等同于8i中的mts_max_servers参数
例子:
mts_dispatchers = "(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.10.243))(DISPATCHERS=10)"
mts_max_dispatchers=20
mts_servers=10
mts_max_servers=50
mts_service=dbora817
mts_listener_address="
(address=(protocol=tcp)(host=192.168.10.243)(port=1521))" large_pool_size=50M需要说明的是large_pool_size这个初始化参数,在MTS环境中为获取更好的性能建议设置这个参数


reference:
http://dev.csdn.net/article/24/24969.shtm
http://dev.csdn.net/article/24/24970.shtm
http://dev.csdn.net/article/27/27383.shtm