ORACLE专用服务器连接与共享服务器连接

       在ORACLE9i或者10g中, 可以看到有2种连接模式, 一种叫做专用服务器连接(dedicated server), 另外一种叫做共享服务器连接(shared server)。

一、ORACLE专用服务器连接

        专用服务器连接就是说每次在对ORACLE进行访问请求时, ORACLE服务器的监听器会得到这个访问请求, 然后会为这个访问创建一个新的进程来进行服务。所以说,对于每一个客户端的访问, 都会生成一个新的进程进行服务,是一种类似一对一的映射关系。这种连接模式的一个很重要的特点就是UGA(用户全局区)是存储在PGA(进程全局区)中的, 这个特性也很好说明了当前用户的内存空间上按照进程来进行分配的。

二、ORACLE共享服务器连接

        采用这种连接模式时, 在数据库初始化的时候会创建一批服务器连接的进程, 然后把这些连接进程放入一个连接池来进行管理。初始化的池中的进程数量在数据库初始化建立的时候是可以手动设置的。在连接建立的时候, LISTENER首先接受到客户端的建立连接的请求, 然后LISTENER去生成一个叫调度器(DISPATCHER)的进程与客户端进行连接。 调度器把客户端的请求SGA(系统全局区域)的一个请求队列中, 然后再共享服务器连接池中查找有无空闲的连接, 然后让这个空闲的服务器进行处理。处理完毕以后再把出来结果放在SGA的响应队列中。调度器通过查询响应队列, 得到返回结果, 再返回给客户端。 这种连接模式的优点在于服务器进程的数量可以得到控制, 不大可能出现因为连接人数过多而造成服务器内存崩溃。 但是由于增加了复杂度以及请求响应队列, 可能性能上有所下降。

        对于dedicated servers的设置非常简单, 不需要设置, 这个是ORACLE的默认选项, 而对于shared servers, 你就需要做一些额外的设置, 当让按照administrator guide并不难, 关键是你需要决定到底需要多少个shared server servers(指的是多少个共享服务器进程)和多少个dispatcher, 这不仅仅需要经验的积累, 还需要持续的观察和调整。

        在delicated servers里, 你所有的等待都是数据库本身的等待(如何理解这句话???), 而在shared servers里你有可能需要等待一个available的shared server process。很明显, 当用户并发的连接数很大的时候, delicated servers的server process个数也会变得很大, 对操作系统来说多一个process就意味着多一点管理负担, 要知道操作系统支持的同时并发数可不是无限的。 这意味着, 在delicated servers里,  当年有大量的用户连接(比如, 同一时间超过5000个用户连上来), 你的系统负担就会相当大。 而这种情况shared servers就可以处理的相对好一些, 因为假如同时有5000个用户连上来而且我们知道一般只有1%的连接是active, 那我们只需要设置50个shared servers就可以把所有的用户请求处理很好, 并节省了系统资源。

        作为一个好处, shared servers可以用来控制concurrent(同时并发的), 要知道用户的并发数和系统的处理能力决不是成正比的, 当用户并发数超过一个阀值, 系统的处理能力会明显下降。 通过shared servers可以控制系统的concurrent不超过这个阀值。

        在引入PGA的自动管理以前, shared servers是要比delicated servers节省内存的, 然后在自动管理的PGA引入之后, shared servers的这个优胜已经不象我们想象的那么明显了。(何为PGA的自动管理???)

        delicate servers一个server process为了一个较大的request而长时间的工作而不影响其它的users, 然而杂shared servers, 一些较大的request会影响其它的用户。

         还需要考虑其他的因素, 比如, 如果在前端使用了weblogic的connecting pool, 那么你在dtabase level再使用shared servers可能就不是很必要, 因为这时你的用户连接已经在weblogic层面上得到了控制。

        两种模式下, 对SGA等分配都会有不同, 共享连接只是把连接SESSION信息放在LAGER POOL, 所以LARGE POOL要大一些。而专用的SESSION信息放在PGA。

        delicate servers和shared servers是可以并存的。 如果是delicate server, 则客户端只能创建delicated server connection, 如果是shared server, 则客户端能创建dedicated server connection和shared server connection, 只要在service name中指定server=dedicated or server=shared。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值