Oracle数据库共享连接和专用连接方式比较 (1)

上一篇 / 下一篇  2008-05-10 15:13:11

在专用连接方式中,每一个连接到数据库服务器的客户端请求,服务器会和客户端之间建立起连接,这个连接用于专门处理该客户端的所有请求,直到用户主动断开连接或网络出现中断。在连接处于空闲时,后台进程PMON会每隔一段时间,就会测试用户连接状况,如果连接已断开,PMON会清理现场,释放相关的资源。 专用连接相当于一对一的连接,能够快速的响应用户的请求。当然,在连接的时候,首先要创建PGA(Program global area),参数pga_aggregate_target 决定可以由所有服务器进程使用的内存的总量,参数workarea_size_policy 决定是用手动管理还是自动管理。如:

SQL> show parameter pga_aggregate_target

NAME                                 TYPE        VALUE
------------------------------------ ----------- --------
pga_aggregate_target                 big integer 10485760

SQL> show parameter workarea_size_policy

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------
workarea_size_policy                 string      AUTO

而Pga由三部分构成,其中有可以配置的 sort_area_size,还有会话信息,堆栈空间。

sort_area_size是用户用来排序的内存空间:

SQL> show parameter sort_area_size

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------
sort_area_size                       integer     524288

如果排序的数据量比较大,排序空间不够用,这时Oracle通过专用算法,对数据进行分段,分段后的数据转移到临时表空间中,在临时表空间中进行排序,完成后,再合在一起,返回给请求的用户。这是大排序为什么使用临时表空间的原因。

在专用连接中,连接所需要的资源全部在PGA中分配。该内存区为指定连接私有,其它进程不能访问。

专用连接采用一对一的连接方式,能很的响应用户的请求,但是,如果连接用户太多时,由于要对每一个连接分配资源,因此,连接数受硬件限制比较大。为了克服这种情况,Oracle 提出了共享连接的连接方法,即用一个服务器的进程响应多个用户连接,与专用连接不同有连接时才创建PGA不同,共享连接在实例一启动,就分配指定数量的服务器进程,所用户的连接,以排队的方式,由分配器指定给服务器进程,其它的进程排队等待。只要用户的请求一执行完,就会马上断开连接,分配器会把空闲的服务器进程分配给其它排除的进程。

采用共享连接可以有效的提高服务器资源的利用率,但是对一个分配器,只支持一种协议,每个分配器有自已的排队队列,在请求的任务完成后,由分配器将操作结果返回给相应的用户进程。但是共享连接的建立, 需要Oracle的监听进程、分配器、共享服务器进程才能共同完成一个连接的创建,所以连接的分配也需要一定的时间和资源。

在共享连接中,sort_area_size 将在 SGA 的 Large_pool 中分配。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2008-05-17  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 3077
  • 日志数: 2600
  • 图片数: 1
  • 建立时间: 2008-03-20
  • 更新时间: 2008-05-12

RSS订阅

Open Toolbar