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

Posted 性能、可用性、伸缩性、扩展性、安全性、可监控是网站架构最核心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle database resident connection pooling(驻留连接池)相关的知识,希望对你有一定的参考价值。

        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(驻留连接池)的主要内容,如果未能解决你的问题,请参考以下文章

MDF does not reside in a read-only database or filegroup

Oracle Ologgerd进程占用过多CPU资源

OPatch从 Oracle Database 19.3 升级到 Oracle Database

Oracle Database Gateways 下载

内存数据库中的索引技术

Oracle LiveLabs实验:Manage Database Instance and Memory for Oracle Database 21c