关于连接池:基于HiKariCP组件分析连接池原理
池塘里养:Connection;一、设计与原理1、根底案例HiKariCP作为SpringBoot2框架的默认连接池,号称是跑的最快的连接池,数据库连接池与之前两篇提到的线程池和对象池,从设计的原理上都是基于池化思维,只是在实现形式上有各自的特点;首先还是看HiKariCP用法的根底案例: import com.zaxxer.hikari.HikariConfig;import com.zaxxer.hikari.HikariDataSource;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;public class ConPool { private static HikariConfig buildConfig (){ HikariConfig hikariConfig = new HikariConfig() ; // 根底配置 hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/junit_test?characterEncoding=utf8"); hikariConfig.setUsername("root"); hikariConfig.setPassword("123456"); // 连接池配置 hikariConfig.setPoolName("dev-hikari-pool"); hikariConfig.setMinimumIdle(4); hikariConfig.setMaximumPoolSize(8); hikariConfig.setIdleTimeout(600000L); return hikariConfig ; } public static void main(String[] args) throws Exception { // 构建数据源 HikariDataSource dataSource = new HikariDataSource(buildConfig()) ; // 获取连贯 Connection connection = dataSource.getConnection() ; // 申明SQL执行 Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT count(1) num FROM jt_activity") ; // 输入执行后果 if (resultSet.next()) { System.out.println("query-count-result:"+resultSet.getInt("num")); } }}2、外围相干类HikariDataSource类:会集数据源形容的相干信息,例如配置、连接池、连贯对象、状态治理等;HikariConfig类:保护数据源的配置管理,以及参数校验,例如userName、passWord、minIdle、maxPoolSize等;HikariPool类:提供对连接池与池中对象治理的外围能力,并实现池相干监控数据的查询方法;ConcurrentBag类:摈弃了惯例池中采纳的阻塞队列作为容器的形式,自定义该并发容器来存储连贯对象;PoolEntry类:拓展连贯对象的信息,例如状态、工夫等,不便容器中追踪这些实例化对象;通过对连接池中几个外围类的剖析,也能直观地领会到该源码的设计原理,与上篇总结的对象池利用有殊途同归之妙,只是不同的组件不同的开发者在实现的时候,都具备各自的形象逻辑。 ...