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


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

多线程服务器(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

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus