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语言实现的数据库连接池示例,名为ConnectionPool。 ...
本文将深入解析“ConnectionPool”(数据库连接池)的工作原理,常见实现及使用方法。 **一、数据库连接池的概念** 数据库连接池,简单来说,就是管理数据库连接的池化技术。它预先创建一定数量的数据库连接,当多...
### DBCP(Database Connection Pool)数据库连接池详解 #### 一、简介 DBCP(Database Connection Pool)是一个开源的数据库连接池实现,它依赖于Apache Jakarta commons-pool对象池机制。DBCP允许应用程序直接...
使用数据库连接池有以下几个关键点需要注意: 1. **连接字符串**: 连接字符串是连接池识别连接的关键,如果两个连接字符串完全相同,它们将共享同一个连接池。 2. **连接生命周期**: 应尽早打开连接并在使用后尽快...
数据库连接池(database connection pool)是在 Java 中用于管理数据库连接的一种技术。它的主要目的是提高数据库连接的重用性和性能。在传统的数据库连接方式中,每次与数据库建立连接时都需要进行一系列的网络通信...
- `ConnectionPool`: 实现连接池的核心类,包含连接的创建、获取、释放和管理逻辑。 - `DatabaseConnection`: 表示单个数据库连接的类,可能包含与特定数据库交互的方法。 - `PoolConfig`: 存储连接池配置信息的类,...
java数据库连接池connectionPool.zip java数据库连接池connectionPool.zip java数据库连接池connectionPool.zip java数据库连接池connectionPool.zip java数据库连接池connectionPool.zip
Java数据库连接池(Connection Pool)是Java应用程序管理数据库连接的一种高效方法。在Java中,连接池的概念是为了优化数据库访问性能,避免频繁创建和关闭数据库连接而导致的资源浪费。`connectionPool.jar`是一个...
它的核心特性之一就是连接池(Connection Pool),它在提高网络性能和减少延迟方面起到了关键作用。本文将深入探讨OkHttp中的连接池实现,包括连接对象的添加、移除机制以及其工作原理。 首先,我们需要了解什么是...
在"DatabasePool_next"这个子文件中,我们可以期待找到以下关键知识点: 1. **连接池实现**:可能包含一个具体的数据库连接池实现,如Apache的DBCP、C3P0或HikariCP等。每个库都有其特性和配置选项,比如最大连接数...
连接池的管理位于包内完成,客户端可以通过接口获取池中的连接资源(返回 pymysql.Connection); 将最大程度地与 dataobj 等兼容,便于使用; 连接池本身具备动态增加连接数的功能,即 max_pool_size 和 step_...
这里我们将深入探讨`ConnectionPool`相关的知识,包括其工作原理、主要功能以及如何通过提供的`ConnectionPool.java`和`PoolManager.java`文件来实现一个简单的连接池。 1. 数据库连接池的工作原理: - 初始化阶段...
数据库连接池(Database Connection Pool,简称DCP)被广泛应用于解决传统数据库访问方法中的问题。本文首先介绍了DCP的基本模型及其工作原理,并在此基础上提出了一种动态优化方法。通过分析动态DCP的工作机制,...
在实际应用中,开发者通常会在Spring框架中配置数据源,选择合适的连接池实现,如在Spring Boot项目中,可以通过YAML或properties配置文件设置连接池的相关参数: ```yaml spring: datasource: type: ...
Apache的DBCP(Database Connection Pool)是一个开源的数据库连接池实现,它是Commons DBCP项目的一部分。DBCP提供了数据源接口,使得应用可以通过这个接口获取和释放连接,而实际的连接创建和管理则由连接池来处理...
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包...
本篇文章将深入探讨“C#高效数据库连接池源码”相关的知识点。 1. **数据库连接池原理**: 数据库连接池是一种对象池设计模式的应用,它维护了一组已打开的数据库连接,而不是每次需要时都创建新的连接。应用程序...