数据库连接池的深入学习

为什么需要数据库连接池?

正常操作数据库需要对其进行连接,访问数据库,执行sql语句,断开连接。

创建数据库连接是一个昂贵的过程,在高并发的情况下,频繁的创建数据库的连接可能会导致数据库宕机。

有了连接池那么启动就创建多个连接对象,并保存起来,当需要的时候取出来执行sql语句,用完放回,那么极大的减少了连接的建立与摧毁的开销。

池化技术从根本上就是将连接的对象保存起来,并不对其进行摧毁,那么在高并发的场景下不需要频繁的对连接进行创建与销毁,减少创建资源的开销。增加响应速度。(线程池也如此)

连接池优点:

1.资源复用:减少连接的建立与销毁的开销。

2.提高性能:在初始化的时候连接就已经建立好,可以立即使用,不需要在执行sql语句时再创建,减少了响应时间。

3.优化资源分配:当我们有有个应用需要操作数据库时,在持久层可以设置最大数量,来避免资源的耗尽。

4.生命周期管理:池化技术负责连接的创建,初始化,销毁与回收。

使用JDBC来操作数据库:

java 复制代码
//1. 连接=数据库
Connection connection = DriverManager.getConnection(jdbcUrl, username, password);
 try {
		Statement stmt = conn.createStatement();
		ResultSet rs = stmt.executeQuery("SELECT * FROM user") ;
		//使用结果集ResultSet获取数据。
		 while(rs.next()){   
	         String name = rs.getString("name") ; 
	         System.out.println(name);
	     } 
		 //操作完成以后关闭JDBC对象,要把所有使用的JDBC对象全都关闭,以释放JDBC资源,同时按照先进后出的原则来释放。
           resultSet.close();
           preparedStatement.close();
           connection.close();
	  } catch (SQLException e) {
		e.printStackTrace();
	  }

而现在普遍使用JDBC连接池,JDBC也提供了一个标准的数据源接口javax.sql.DataSource

目前常见的JDBC连接池开源技术:

  1. HikariCP:以其极低的延迟和卓越的性能著称,实现了"零加锁"并发控制机制,优化了线程与内存的使用,适合高并发场景。HikariCP提供了丰富的配置选项,并且被Spring Boot 2官方推荐使用 。

  2. Apache DBCP (Database Connection Pool):由Apache开发的Java数据库连接池项目,使用了Jakarta commons-pool对象池机制。它提供了基本的连接池功能,虽然性能可能不如HikariCP,但稳定性好,易于配置 。

  3. C3P0:一个开源的JDBC连接池,实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0历史悠久,但代码复杂,可能存在维护上的挑战 。

  4. Druid:由阿里巴巴开发的数据库连接池,提供了丰富的监控和扩展功能,具有防SQL注入的能力,内置了多种监控和统计功能,方便对JDBC接口进行监控跟踪 。

  5. BoneCP:曾经是最快的连接池之一,但在2013年后不再更新。它被设计为高效、轻量级,并且易于集成到各种持久化产品中 。

  6. Tomcat JDBC Pool:Tomcat从7.0版本开始引入的连接池模块,完全兼容DBCP,通过异步方式获取连接,支持高并发应用环境

相关推荐
Xudde.3 分钟前
friendly靶机渗透
笔记·学习·安全·web安全·php
g***727012 分钟前
从MySQL迁移到PostgreSQL的完整指南
数据库·mysql·postgresql
冷雨夜中漫步30 分钟前
Maven BOM(Bill of Materials)使用指南与常见错误
java·数据库·maven
拼好饭和她皆失35 分钟前
Java学习---Arrays类
java·开发语言·学习
hanyi_qwe36 分钟前
Mysql主从复制与读写分离测试
数据库·mysql
代码游侠37 分钟前
学习笔记——GDB调试工具
linux·开发语言·笔记·学习
梁bk38 分钟前
Redis 通信协议(RESP)
数据库·redis·缓存
行走的夜40 分钟前
高质量测试用例设计:金字塔模型+系统化工作流+方法体系+改进机制
学习·测试用例
思成不止于此43 分钟前
MySQL 约束详解:保证数据完整性的核心机制
数据库·笔记·学习·mysql
九千七5261 小时前
sklearn学习(5)线性回归和逻辑回归
人工智能·学习·机器学习·逻辑回归·线性回归·sklearn