数据库连接池

简介: 数据库连接池

什么是数据库连接池

使用数据库连接池的好处是减少了连接的创建和关闭的开销,提高了数据库访问的性能和效率。


为什么我们要使用数据库连接池

我们使用数据库连接池的主要原因是为了提高应用程序访问数据库的性能和效率。使用数据库连接池的好处:


  1. 连接重用:连接池可以重复使用已经建立的连接,避免了频繁地创建和关闭连接的开销。这样可以节省连接建立的时间和资源消耗。


  1. 连接管理:连接池可以自动管理连接的状态和可用性。在应用程序使用连接之前,连接池会对连接进行验证和修复,确保连接的有效性,从而提高应用程序对数据库的可靠性。


  1. 连接的限制和控制:数据库连接池可以控制同时打开的连接数,防止过多的连接造成数据库的负担。这样可以避免数据库连接过载导致性能下降。


  1. 连接的高可用性:连接池可以实时监控连接的可用性,并在连接出现问题时进行故障转移和重试。这提高了应用程序对数据库的可用性和容错性。


  1. 提高数据库的吞吐量:由于连接池可以有效地管理和重用连接,减少了连接的创建和销毁开销,从而提高了数据库的吞吐量。


总之,使用数据库连接池可以优化数据库访问的性能、提高应用程序的可靠性与可用性,并减轻数据库负担,是一种常用的数据库连接管理技术。


数据库连接池的运行机制

(1) 程序初始化时创建连接池


(2) 使用时向连接池申请可用连接


(3) 使用完毕,将连接返还给连接池


(4) 程序退出时,断开所有连接,并释放资源


配置Tomcat的conf/context.xml


在Context节点之间加入

<Resource 
    name="jdbc/sys"                 ///名称
    auth="Container"                ///容器
    type="javax.sql.Datasource"     ///类型
    maxActive="100"                 ///最大连接数
    maxIdle="30"                    ///最大空闲连接数
    maxwait="10000"                 ///最大的等待时间
    username="root"                 ///sql账号
    password="123456"               ///密码
    driverClassName="com.mysql.cj.jdbc.Driver"    ///加载
    url="jdbc:mysql://localhost:3306/"            ///数据库路径
/>

使用JNDI获取连接对象

*BaseDao*
public boolean getConnextion(){
    try{
        //初始化上下文
        Context cxt=new InitialContext();//连接池的上下文对象
        //获取与逻辑相关的数据源对象
        Object  obj=context.lookup("java:comp/env/jdbc/news");
        DataSource ds=(DataSource)obj;//向下转型为数据源对象
        conn=ds.getConnection();
        return true;
    }catch(NamingException e){
        e.printStackTrace();
        return false;
    }catch(SQLExeption e){
        e.printStackTrace();
        return false;
    }
}
相关文章
|
7月前
|
SQL 网络协议 数据库连接
什么是数据库连接池?为什么需要数据库连接池呢?
什么是数据库连接池?为什么需要数据库连接池呢?
|
网络协议 关系型数据库 MySQL
实现数据库连接池
实现数据库连接池
142 0
|
25天前
|
数据库连接 数据库
数据库连接池
数据库连接池的根本原理其实并不复杂,其原理就是服务器提前准备好一组可以使用的数据库连接,当客户端的请求到达时,如果数据库连接池里有空闲连接的话,就取出一个空闲连接进行数据库操作,如果已没有空闲连接就进入等待。通过这样的数据库连接复用,可以在很大程度上提高服务器的性能,并减轻数据库的负担。
|
2月前
|
SQL 监控 Java
C3P0数据库连接池
C3P0数据库连接池
127 0
|
7月前
|
SQL druid Java
Driud数据库连接池的使用
Driud数据库连接池的使用
86 0
|
6月前
|
SQL 缓存 关系型数据库
数据库连接池到底应该设多大?
数据库连接池到底应该设多大?
311 0
|
7月前
|
Java 关系型数据库 MySQL
数据库连接池的实现
数据库连接池的实现
|
Java 关系型数据库 应用服务中间件
数据库连接池对比
数据库连接池对比
105 0
|
Java 数据库连接 数据库
一篇文章学会学会c3p0数据库连接池~
一篇文章学会学会c3p0数据库连接池~
283 0
|
SQL 缓存 监控
数据库连接池 BoneCP、HikariCP 等
数据库连接池 BoneCP、HikariCP 等
258 0