数据库|跟我学Springboot开发后端管理系统4(数据库连接池Druid和HikariCP)

上一篇文章主要讲解了如何再Matrix-Web中使用Mybatis-Plus,Mybatis-Plus作为Orm框架,连接数据库需要连接数据库的依赖。WEB 系统高并发环境下,频繁的进行数据库连接操作,造成系统技术瓶颈问题(无效的资源开销),通过为数据库连接为建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。
数据库连接池有很多,比如c3p0、Druid、Hikari等。大家常用的连接池应该是阿里开源的Druid,Druid不仅是连接池,而且带有监控。在Matrix-Web中,选择的Druid作为数据库连接池。Hikari作为Spring Boot官方推荐的连接池,在这里也讲解一下。
在Spring Boot中使用Druid Druid是阿里开发的一个数据库连接池,在国内比较的流行,具有以下的特性:

  • 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
  • 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
  • SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
  • 扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。
那么如何在Spring Boot项目中集成Durid呢?引入mysql-connector-java的依赖,版本为5.1.38,引入druid-spring-boot-starter,版本为1.1.10。
mysql mysql-connector-java ${mysql.version} com.alibaba druid-spring-boot-starter ${durid.version}

在工程的配置文件做以下的配置:
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/druid spring.datasource.username=root spring.datasource.password=root

这样就在Spring Boot中整合了Durid连接池。
在Spring Boot中使用HikariCP HikariCP是一个高性能的JDBC连接池,基于BoneCP做了不少的改进和优化。
数据库|跟我学Springboot开发后端管理系统4(数据库连接池Druid和HikariCP)
文章图片
从上述结果可以看出HikariCP的性能远高于c3p0、tomcat等连接池,以致后来BoneCP作者都放弃了维护,在Github项目主页推荐大家使用HikariCP。另外,Spring Boot将在2.0版本中把HikariCP作为其默认的JDBC连接池。
在Spring Boot中使用HikariCP连接池,在工程pom文件引入HikariCP依赖,版本为3.3.1。
com.zaxxer HikariCP ${HikariCP.version}

然后在工程的配置文件,加上以下配置:
spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/druid spring.datasource.username=root spring.datasource.password=root

总结 本篇文章主要讲解了在SrpingBoot使用数据库连接池,包括Durid和HikariCP。在Matrix-Web中,这两种数据库连接池都是支持的。下篇文章将讲解数据库的读写分离。
参考资料 https://segmentfault.com/q/1010000007865307/a-1020000007871768
http://zongming.net/read-1373
https://www.jianshu.com/p/dd0c2b0ed202
源码下载 https://github.com/forezp/matrix-web
往期文章:

跟我学Springboot开发后端管理系统1:概述
跟我学Springboot开发后端管理系统2:Mybatis-Plus实战
【数据库|跟我学Springboot开发后端管理系统4(数据库连接池Druid和HikariCP)】跟我学Springboot开发后端管理系统3:Mybatis-Plus实战2

    推荐阅读