SpringBoot工程下实现对HikariCP连接池的整合

访问数据库时我们需要通过TCP协议与数据库建立连接,使用完以后需要释放连接,TCP协议是一个面向连接的协议,建立连接需要“三次握手,四次挥手”,这个过程是比较耗时的,假如频繁的访问数据库,每次都是直接与数据库建立连接,会带来很大的性能问题。

连接池是池化思想一种应用,基于享元模式做了落地的实现,就是在内存开辟一块区域,存储创建好的连接,让这连接得到重用,进而提高数据库的访问性能。

连接池必须遵守java.sql.DataSource这个规范,通过这个规范获取连接池的具体实现,取到连接与数据库通讯。

连接池弊端:会带来一定的内存开销,以空间换时间

耦合于DataSource时,spring注入的是HikariDataSource,获取连接是在HikariPool连接池中获取的连接。

HikariPool存储结构:是通过ConnectionBag-ConcurrentBag来存储连接,ConcurrentBag底层是使用CopyOnWirteArrayList,CopyOnWirteArrayList是在更新池前先做拷贝,然后写回去时会对比版本,如果版本一致则写回去,否则不更新,这样做是在减少阻塞的前提下保证线程安全,

你可能感兴趣的