Oracle 的两种工作模式Dedicated Server 和 Shared Server

来源:互联网 发布:hadoop大数据平台构建 编辑:程序博客网 时间:2024/04/28 18:12



         Oracle可以分成两种工作模式, 分别是 Dedicated Server 和 Shared Server
        
         1  Dedicated Server
                 从字面上理解的就是专用服务器模式,  实际上意思就是指每当有1个新的用户客户端提出连接请求. 建立1个session时, Oracle 服务器端都会启动1个对应的服务器进程(server process)与其对接. 那么这个server process就专门为这个session服务了.
                 简单d来讲 Dedicated Server 模式下,  每1个连接中的session都会有1个server process与其对接. 
                 Dedicated Server 模式是Oracle最常用的模式.

         2  Shared Server
             
另一种模式就是shared模式了, shared 模式简单点来讲就是1个server process 可以为不同的session服务, 那么这个是怎样实现的呢? 画个图便于理解.
                

Oracle 的两种工作模式Dedicated Server 和 Shared Server - 饥民 - 饥民2011
 

 
                 如上图, 这种模式没有server process, 但是有1个共享 server 池. 里面有若干个 共享server进程. (share server process)
                 当最左边的客户端连接(sessions)要连接数据库时, 并不能直接访问服务器的shared server process, 而是同个一个或一组调度进程(Dispatcher)进行调度管理.
                  如上图中有3个调度进程.假如同一时间共有90个 session要连接数据库. 那么每个dispatcher就会接管30个session, 他们会把sessions的请求依次放入到sga里面的请求队列(Request Queue)中,   当上面的share server池中有空闲的shared server process时. 这个shared server process就会从Request Queue中提取并处理1个请求,  当处理完成时.会将响应放入sga里的 响应队列中(response Queue) , dispatchers 会将 response queue里的响应逐个返回给客户端session..

                   Shared Server 模式做成这么复杂自然有它的原因.  当1个服务器同时要链接很多数量的session时, 例如10000个, 如果在上面的Dediacted Server模式中就要在服务器建立对应的10000条服务器进程, 一般的服务器就很难管理这么海量的进程数量. 有可能就挂了.

                    而在Shared Server模式中,  shared server process就是那么多个,  再多的session请求都会放入 队列中由空闲的shared server process逐个处理. 所以Shared Server的优点就是可以应付大量的用户连接sessions.


                     所以在数据库连接量非常大.但是每个连接的负载都很小的情况下,会建议使用shared Server 模式.

                   但是缺点也明显. 因为流程复查,而且请求要排队(队列), 所以shared Server模式的速度天生就比 Dedicated Server 模式慢的,  而且当队列中1个对象失去响应..那么队列中其他的对象也只能干等..相当于整个数据库失去响应了....