PostgresSQL_Database Connecting Pooling

本文介绍了数据库连接池的概念,强调了其在提高数据库操作效率中的作用。通过实例展示了如何在Java中使用C3P0连接池进行配置和管理数据库连接,包括设置初始和最大连接数,并进行了获取连接池状态和执行查询操作的测试。此外,还提到了Druid作为推荐的数据库连接池组件,因其强大的监控特性。
摘要由CSDN通过智能技术生成

What the connections pools help?

Connection pool serves as a collection which contains several opening database connections that can be reused by database requests.

In fact, establishing a database connection is a time- consuming operation, and the process will include network link, user authentication and so on.

For ordinary process:

 Using connection pool:

数据库连接池是为了提高代码的自动化程度。

自然界的池子里需要有水,数据库连接池里面有很多个连接并且这些连接可以被不同线程共用。

让数据库的打开和关闭都由数据库连接池自动管理。

数据库连接池在某种程度上是一个容器,每个连接的本质上是对象的复用。

一个比较典型的数据库连接池的示意图:

以上是Java语言编写的连接池。

当Java收到用户的请求时,会找到连接池中空闲的连接。

当发送关闭请求时,是连接池中占用状态的关闭,而不是连接的关闭,类似于挂机等待。

连接池有自己的策略,开多少个,占用多少个...

C3P0: 连接稳定,但是慢

Proxool: 快一些,但是有时候不是那么稳定

...

推荐:

Druid: 阿里推出的,主打监控

基于老师给的代码的一些测试:

测试一:创建数据库连接池并且测试连接语句

测试二: 设置一些连接池的参数,并且讨论一些内在机制

  1. 内在代理机制: 仅仅是为了进行查看。
  2. 设置一些参数:
dataSource.setInitialPoolSize(1);
dataSource.setMaxPoolSize(1);

测试三: 获取连接池状态

public static void poolStatus(ComboPooledDataSource dataSource) {
    try {
        System.out.println("Busy Num " +
dataSource.getNumBusyConnections());
        System.out.println("Idle Num" + dataSource.getNumIdleConnections());
        System.out.println("All Num" + dataSource.getNumConnections());
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

测试四: 用连接池技术进行简单查询

// insert
String sql_insert = "......";
try {
    PreparedStatement ps_insert = connection.prepareStatement(sql_insert);
    ps_insert.executeLargeUpdate();
    poolStatus(dataSource);
}catch (Exception e){
    e.printStackTrace();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值