MySQL JDBC连接池最高效的连接检测语句是什么?
对数据库连接池的监控,一种解决方案可能就是写个应用程序,定时尝试连接数据库测,如果出现异常,就进行告警。例如Oracle中,经常会使用select 1 from dual,但它可能会出现一些争用。
MySQL中同样具有相同的问题,陈老师写的这篇文章《什么是 MySQL JDBC 连接池中最高效的连接检测语句?》就给我们讲解了这个问题的几种解决方案。
MySQL 中有哪些常用的 JDBC 连接池,
- c3p0
- DBCP
- Druid
- Tomcat JDBC Pool
- HikariCP
这些连接池中,c3p0 是一个老牌的连接池,很多流行框架,在其老版本中,都将 c3p0 作为默认的连接池。
DBCP 和 Tomcat JDBC Pool(Tomcat 的默认连接池)是 Apache 开源的。
Druid 是阿里开源的,它不仅仅是个数据库连接池,还可以监控数据库的访问性能,支持数据库密码加密等。
HikariCP 是目前风头最劲的 JDBC 连接池,其号称性能最好。
从下图 HikariCP 官网给出的压测结果来看,也确实如此,性能上吊打 c3p0、DBCP2。
包括 SpringBoot 2.0 也将 HikariCP 作为默认的数据库连接池。