zoukankan      html  css  js  c++  java
  • 关于c#的连接池(以OracleConneciton为例)

    关于c#的连接池:(以OracleConneciton为例)
    1,默认c#的windows application的程序进程是创建connection pool的(Pooling=false不创建connection pool);默认最大连接数(Max Pool Size)为100;
    new一个连接,如果connection pool中空闲的连接,则不会创建连接,否则会创建;
    超出最大连接数,请求会放入队列,直到connection pool中有空闲连接或连接请求超时:
    System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
    close或dispose,将连接放回池中。

    而web application的服务端进程为w3wp.exe(IIS6.0),不管有多少客户端,connection pool是由w3wp.exe创建,所以客户将共享connection pool;而windows

    application就不同,有多少程序进程,就创建多少个connection pool。

    2,Oracle默认连接数设置:
    在init.ora(9.2)中proccesses=150是最大连接数,我测试最多连接数为146(可能预留给或被oracle后台服务用)。用下面语句来查看当前连接数:
    select count(1) from v$session
    超出连接数时:
    ORA-00020:maximun number of processes exceeded;

    例:windows application中, new一个新连接,open后,执行select * from emp where empno=7934 for update nowait语句,close或dispose。
    进入sqlplus,执行select program from v$session where username is not null,会发现程序进程依然存在,此时我们new的连接就在连接池中。
    关闭程序,select program from v$session where username is not null,会发现程序进程消失了。当然我之前new的连接不使用,连接池也会自己释放它。
    (...待续)

  • 相关阅读:
    OpenGL纹理映射总结
    研究生常用网站:
    Oracle 11g,10g数据库软件下载地址
    <转>乔布斯羡慕嫉妒恨的人:Android之父安迪·鲁宾
    VC6里面的中文名字或者注释复制乱码解决
    基于CentOs的Hadoop集群全分布式部署<转>
    centos架设FTP服务器
    centos 卸载 jdk
    ESX的 企业版许可证
    vsftpd的 553 Could not create file
  • 原文地址:https://www.cnblogs.com/noahsky/p/1576519.html
Copyright © 2011-2022 走看看