JDBC连接池

数据库连接池是提高数据库应用性能的重要技术,它通过复用已建立的连接来减少创建新连接的时间。本文介绍了连接池的概念、优点,并对比了不同类型的连接池如C3P0和Druid。重点讲解了Druid连接池的特性,以及如何封装使用Druid。使用连接池能有效控制资源消耗,避免应用程序在高负载下异常崩溃。
摘要由CSDN通过智能技术生成

数据库连接池

什么是连接池

连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的 线程 使用。 这种连接“汇集”起来的技术基于这样的一个事实:对于大多数应用程序,当它们正在处理通常需要数毫秒完成的 事务 时,仅需要能够访问 JDBC 连接的 1 个线程。 当不处理事务时,这个连接就会闲置。 相反,连接池允许闲置的连接被其它需要的线程使用。 事实上,当一个线程需要用 JDBC 对一个 GBase 或其它数据库操作时,它从池中请求一个连接。 当这个线程使用完了这个连接,将它返回到连接池中,这样这就可以被其它想使用它的线程使用。 当连接从池中“借出”,它被请求它的 线程 专有地使用。

连接池优点

减少连接创建时间
虽然与其它数据库相比 GBase 提供了较为快速连接功能,但是创建新的 JDBC 连接仍会招致网络和 JDBC 驱动的开销。如果这类连接是“循环”使用的,使用该方式这些花销就可避免。
简化的编程模式
当使用连接池时,每一个单独的线程能够像创建了一个自己的 JDBC 连接一样操作,允许用户直接使用JDBC编程技术。
受控的资源使用
如果用户不使用连接池,而是每当线程需要时创建一个新的连接,那么用户的应用程序的资源使用会产生非常大的浪费并且可能会导致高负载下的异常发生。
注意,每个连到 GBase 的连接在客户端和服务器端都有花销(内存,CPU,上下文切换等等)。每个连接均会对应用程序和 GBase 服务器的可用资源带来一定的限制。不管这些连接是否在做有用的工作,仍将使用这些资源中的相当一部分。
连接池能够使性能最大化,同时还能将资源利用控制在一定的水平之下,如果超过该水平,应用程序将崩溃而不仅仅是变慢。

连接池种类

  1. JDBC的数据库连接池使用 javax.sql.DataSource 来表示,DataSource知识一个接口,该接口的通常由第三方提供实现。
  2. C3P0 数据库连接池:速度相对较慢,稳定性不错
  3. DBCP 数据库连接池:速度相对C3P0较快,但不稳定
  4. Proxool 数据库连接池:有监控连接池状态的功能,稳定性较C3P0差一点
  5. BoneCP 数据库连接池:速度快
  6. Druid(德鲁伊)阿里提供的数据连接池,集DBCP、C3P0、Proxool优点于一身的数据库连接池

C3P0 数据库连接池

public class C3P0_ {
   
    @Test
    public void testC3P0_01() throws Exception {
   
        //创建一个数据源对象
        ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
        //通过配置文件 mysql.properties 获取相关连接的信息
        Properties properties = new Properties();
        properties.load(new FileInputStream("src\\mysql.properties"));
        String user = properties.getProperty("user");
        String password 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值