SpringBoot工程下实现对HikariCP连接池的整合
访问数据库时我们需要通过TCP协议与数据库建立连接,使用完以后需要释放连接,TCP协议是一个面向连接的协议,建立连接需要“三次握手,四次挥手”,这个过程是比较耗时的,假如频繁的访问数据库,每次都是直接与数据库建立连接,会带来很大的性能问题。
连接池是池化思想一种应用,基于享元模式做了落地的实现,就是在内存开辟一块区域,存储创建好的连接,让这连接得到重用,进而提高数据库的访问性能。
连接池必须遵守java.sql.DataSource这个规范,通过这个规范获取连接池的具体实现,取到连接与数据库通讯。
连接池弊端:会带来一定的内存开销,以空间换时间
耦合于DataSource时,spring注入的是HikariDataSource,获取连接是在HikariPool连接池中获取的连接。
【SpringBoot工程下实现对HikariCP连接池的整合】HikariPool存储结构:是通过ConnectionBag-ConcurrentBag来存储连接,ConcurrentBag底层是使用CopyOnWirteArrayList,CopyOnWirteArrayList是在更新池前先做拷贝,然后写回去时会对比版本,如果版本一致则写回去,否则不更新,这样做是在减少阻塞的前提下保证线程安全,
推荐阅读
- 开学第一天(下)
- 【故障公告】周五下午的一次突发故障
- Activiti(一)SpringBoot2集成Activiti6
- 生活随笔|好天气下的意外之喜
- MongoDB,Wondows下免安装版|MongoDB,Wondows下免安装版 (简化版操作)
- 汇讲-勇于突破
- Android中的AES加密-下
- 说的真好
- 放下心中的偶像包袱吧
- SpringBoot调用公共模块的自定义注解失效的解决