oracle MTS共享服务器
MTS(multi-thread server)属于数据库安装时的可选配置项
最大优点是在不要服务器增加物理内存时提升连入数据库的并发访问数了。就好比餐馆有一对一服务的服务员和一对多服务的服务员,服务总量一定,前者服务员数量肯定多余后者。采取MTS会大量消耗cpu性能,所以仅适合连接数量多但是请求短小的使用场景
#口述架构与流程
1、总体分成客户端和服务端两部分
2、客户端就是用户进程了,会有多个
3、安装MTS的数据库,会单独有一个dispathcher进程与外部客户端交互,该进程同时也跟oracle内部进行交互请求和响应
4、当多个客户端进程发起一个连接执行事务时,dispathcher进程会先依次将这些连接的请求放进sga系统全局区中请求队列request queue中,然后oracle服务器进程会依次读取队列内容进程处理,优先处理完的会再次放到sga的响应队列response queue中,然后按照顺序依次给到dispathcher进程。
5、dispathcher进程在依照结果给到客户端响应
#MTS使用时与大池的大小large_pool_size参数息息相关,所以该参数需要设定到合适位置。
SELECT sum(value) "Max MTS Memory Allocated"
FROM v$sesstat ss, v$statname st
WHERE name = 'session uga memory max'
AND ss.statistic#=st.statistic#
#用于获取自MTS启用以来,所使用过的最大内存数量。可以依照这个来进行大池参数的判断
select name,(busy/(busy+idle))*100 "dispatcher % busy rate" from v$dispatcher;
#用于查看dispatcher数量使用比例,如果大于50%,需要增加dispatcher进程数量
SELECT decode(totalq,0,'No Requests') "Wait Time",Wait/totalq ||'hundredths of seconds' "Average Wait time per request" FROM V$QUEUE WHERE type = 'COMMON'#用于判断共享进程服务是否够用,获取每次请求的平均等待时间
#在MTS配置的Server请求Dedicate的连接
#Tnsnames.ora中做服务名配置时加入SRVR=DEDICATED这个选项就可以了,示例如下:
billing =
(DEscrīptION =
(
ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = ks3)(PORT = 1521))
)
(
CONNECT_DATA =
(SERVICE_NAME = billing)
(SRVR = DEDICATED)
)
)
进阶:https://www.cnblogs.com/weaver1/archive/2012/02/13/2348706.html