zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    购买 Linux VPS 服务器后简单的安全设置
    VPS性能测试:CPU内存,硬盘IO读写,带宽速度,UnixBench和压力测试
    Polysh实现多服务器批量执行shell
    第十一周编程总结
    第十周作业
    第九周编程总结修改
    第九周编程总结
    第八周编程总结
    第7周编程总结
    第七周编程总结啊
  • 原文地址:https://www.cnblogs.com/hnsongbiao/p/7487396.html
Copyright © 2011-2022 走看看