0、javax.sql.PooledConnection
1、connection pooling(连接缓冲)=>database connection pool(数据库连接池)=>database physical connection(物理连接)||long connection(长连接)
2、Connection(数据库连接)-->Statement(会话声明)-->Resultset(结果游标)
3、 1 Connection=>n Statements
4、Database Connection Pool=>I、PoolSize,限制应用或系统可拥有的最大资源(对数据库资源的保护);II、在PoolSize中,最大限度的使用连接资源(充分利用发挥数据库的有效资源);III、封闭操作:申请、释放、回收、共享和同步
5、ConnectionPoolManager=>method close=>Closes the physical connection that this PooledConnection object represents
连接池管理器的close方法关闭的是一个物理连接。
6、Thus, when an application closes its connection, the underlying physical connection is recycled rather than being closed.
然后(在使用数据源时),应用系统(web应用)中调用的close方法,关闭的是逻辑连接,即连接池管理器会将在用的连接变为空闲,也就是回收连接,以供其他客户端再次使用该连接。一般的应用代码如下:
********begin********
Connection conn = ds.getConnection();
rs.close();
stmt.close();
conn.close();
********end***********
7、The physical connection is not closed until the connection pool manager calls the PooledConnection method close. This method is generally called to have an orderly shutdown of the server or if a fatal error has made the connection unusable.
物理连接一般不会被关闭(即长连接),直到连接池管理器调用了PooledConnection的close方法。该方法的调用一般是在应用服务器(中间件)正常关闭时或者遇到致命的错误时,才会将连接置为不可用,即关闭物理连接。
7.1、JDBC只提供了最直接的数据库操作规范,对数据库资源管理,如:对物理连接的管理及缓冲,期望第三方应用服务器(Application Server)的提供。
7.2、200(connections)* 250(statements)=50000(statement)
7.3、应用服务器以oracle(或其他数据库)为数据源时,数据库提供的物理连接最大数由process决定,如果连接同一数据库的数据源有N个,则N个数据源连接池的最大(物理)连接数的总和不能超过process,实际上还有一部分物理连接为预留的,应该不超过process*90%。
查询由数据源连接池创建的物理连接数:
-- for v$session
select count(a.program) as session_number
from v$session a
where a.USERNAME = 'CAN_DO'
AND a.PROGRAM like '%Thin%';
-- for v$process
select count(*) as physical_connection from v$process;
parameter process =150 >= physical_connection >= session_number,
其中session_number数为实际通过中间件的数据源连接池所创建的物理连接数量。
7.4、From Oracle:
(1).1个connection可以有0,1,N个session
(2).1个session可以对应0,1个connection
*******************************************************
8、Transaction=>Local Transaction 和 Global Transaction(distributed transaction)。
9、XA=> prepare 和 commit.
10、weblogic=>TxDataSource=> EnableTwoPhaseCommit=true.
11、XA driver<==>non-XA driver
12、XA connection pool<==>non-XA connection pool
13、distributed transaction
14、prepare=>commit=>rollback
15、non-XA =>transactions must be single-database
16、XA=>distributed transactions
17、2PC(protocol)=>Two Phase Commit
18、根据规范,在Global Transaction中,non-XA数据源可以用,但是要配置成2PC,并且最多只能有1个non-XA数据源。当有2个及以上的non-XA connection pool时,
应用服务器就会抛异常,类似:"java.sql.SQLException: Connection has already been created in this tx context for pool named <first pool's name>. Illegal attempt to create connection from another pool: <second pool's name>"
19、getConnection =>connection handle (连接句柄,作为物理连接的代理,多个连接句柄可以共享同一个物理连接,前提是shareable资源)< logical connection and CM> => physical connection。
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:
分享到:
相关推荐
数据库连接池(database connection pool)是在 Java 中用于管理数据库连接的一种技术。它的主要目的是提高数据库连接的重用性和性能。在传统的数据库连接方式中,每次与数据库建立连接时都需要进行一系列的网络通信...
DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP; 使用连接池的第一项工作就是导包,这里需要的两个jar包分别是: commons-dbcp-1.4....
ConnectionPool数据库连接池例子.doc(ConnectionPool数据库连接池例子)
java数据库连接池connectionPool.zip java数据库连接池connectionPool.zip java数据库连接池connectionPool.zip java数据库连接池connectionPool.zip java数据库连接池connectionPool.zip
如觉得好用请支持一下.有不足之处希望能指出!!
a database connection pool source with example code.
代码中包含okhhtp中连接池的设计,包含连接对象的添加,连接对象何时被移除。
connectionPool.jar 把jdbc封装而成数据库连接池,配置简单,使用方便.
java实现数据库连接池的模拟
connection_pool, 用于 ruby的通用连接池 connection_pool 用于 ruby的通用连接池。MongoDB有自己的连接池。 ActiveRecord有自己的连接池。 这是一个通用连接池,可以与任何 比如 。Dalli和其他 ruby 网络客户端一起...
java连接池;java连接池jar;commons-pool-1.2.jar;commons-pool-1.3.jar+commons-pool.jar;java连接池jar包java连接池;java连接池jar;commons-pool-1.2.jar;commons-pool-1.3.jar+commons-pool.jar;java连接池jar包...
A Method of Design and Optimization of Database Connection Pool
使用JDK1.8、SpringBoot2.2.10.RELEASE、lombok1.18.8、guava23.0、hutool5.3.10、commons-pool2 2.7.0、tika1.22等实现多Ftp连接池实现,通过守护线程实现连接池内连接可用性校验,配置最大、最小连接个数防止Ftp...
我们需要在与 ThemisPool.py 同级文件夹下有用一个后缀名为 .cnf 的配置文件。...In db.cnf we need to do some basic configuration of the mysql database and ThemisPool connection pool to be connected.
简单的数据库连接池示例
多池调用方式为R2Pool pool1=R2PoolUtil.getPool(new File("第一个连接池的配置文件.properties")); Connnection conn1 = pool1.getConnection(); R2Pool pool2=R2PoolUtil.getPool(new File("第二个连接池的...
java 连接池 如何 创建 连接池 以及连接池的设置
DBCP (Database Connection Pool)是一个依赖Jakarta commons-pool对象池机制的数据库连接池,Tomcat的数据源使用的就是DBCP。目前 DBCP 有两个版本分别是 1.3 和 1.4。1.3 版本对应的是 JDK 1.4-1.5 和 JDBC 3,而...
* 获取连接时不需要了解连接的名字,连接池内部维护连接的名字 * 支持多线程,保证获取到的连接一定是没有被其他线程正在使用 * 按需创建连接,可以创建多个连接,可以控制连接的数量 * 连接被复用,不是每次都...
DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要3个包:commons-dbcp.jar,commons-pool.jar,commons-collections.jar由于建立...