码迷,mamicode.com
首页 > 数据库 > 详细

oracle database resident connection pooling(驻留连接池)

时间:2017-09-06 23:57:59      阅读:454      评论:0      收藏:0      [点我收藏+]

标签:sid   resid   查看   分享   请求   根据   缺陷   流程   blog   

        oracle在11g中引入了database resident connection pooling(DRCP)。在此之前,我们可以使用dedicated 或者share 方式来链接数据库,dedicated方式是oracle数据库默认的链接方式,无需过多的配置,而且关于dedicated的bug也是非常少的,因此,通常情况下,建议使用dedicated方式来链接数据库。但是,在服务器资源有限,并且同时连接数据库的用户量非常大时,dedicated方式就无能为力了。假设并发用户为5000,每个dedicated进程需要包含4m的内存,而每个sessioin占用的内存量为400k,那么我们总共需要21.43g的内存。这时我们可以采用share方式来连接数据库,假设共享服务进程数量为100,则总共需要2.29g的内存,其中2g的内存分配自sga。但是shared连接方式由于存在过多的bug,而且为了使用shared方式,需要进行某些配置工作,因此,并不是我们希望采用的数据库连接方式。

        在web横行的今天,数据库技术也面临着的前所未有的挑战。熟悉web技术的人员都知道,web是一种无状态技术。用户请求网页,服务器处理用请求,连接数据库获取数据并进行处理,断开数据库连接,展现网页至用户,这是一般网页的处理流程,它具有数据库连接时间短、频繁连接数据库、并发量大的特点。此时,人们引入了连接池技术,但是这些技术多数是在客户端层面或者中间件层面实现的,具有如下缺陷“

        1.连接池多是单个独立的节点,如果多个节点需要使用公用的数据库连接,往往需要在各个节点独自配置,这无疑会浪费数据库资源

        2.连接池多数采用预分配的方式连接数据库,因此在用户压力不大的情况下,同样会持续保持数据库连接,进而浪费了数据库资源

         除此之外,在某些多进程,单线程的环境(如php)下,使用连接池技术基本是不可能的。

        DRCP的引入可以有效的解决这些问题,DRCP将session和服务器进程捆绑在一起进行缓存(pool server),用户请求连接数据库时,首先会连接到CONNECTION BROKER进程,broker进程根据连接信息从连接池中选择pool server,将其分配给请求用户,此后,用户直接和pool server通信,broker不再参与其中,直至用户断开连接,将pool server归还给连接池。

       技术分享

        同样假设并发用户数量为5000,pool server为100,DRCP所需内存为100 X (400 KB + 4 MB) + (5000 X 35KB)= 609.9 MB,其中(5000*35k)为broker内存,如图:

      技术分享

        在11g中,已经预先安装了DRCP,但默认情况下,并没有启用。启用DRCP需要运行如下过程:

        exec dbms_connection_pool.start_pool;

       通过DBA_CPOOL_INFO视图可以查看DRCP的启用状态。

 

SQL> select connection_pool,status from dba_cpool_info;

CONNECTION_POOL            STATUS
------------------------------ ------------------------------------------------
SYS_DEFAULT_CONNECTION_POOL    INACTIVE

SQL> exec dbms_connection_pool.start_pool;

PL/SQL 过程已成功完成。

SQL> select connection_pool,status from dba_cpool_info;

CONNECTION_POOL            STATUS
------------------------------ ------------------------------------------------
SYS_DEFAULT_CONNECTION_POOL    ACTIVE

 

oracle database resident connection pooling(驻留连接池)

标签:sid   resid   查看   分享   请求   根据   缺陷   流程   blog   

原文地址:http://www.cnblogs.com/hnsongbiao/p/7487396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!