如何实现一个数据库连接池

我们 HikariCP 为例,来说明如何设计一个数据库连接池

HikariCP

ConcurrentBag: Connection 池

  • 无锁设计
  • ThreadLocal 缓存
  • Queue-stealing
  • 直接Direct hand-off 优化

ConcurrentBag

借 Connection 的过程: ThreadLocal => SharedList => SynchronousQueue
还 Connection 的过程: SynchronousQueue => ThreadLocal

HouseKeeper: 维持最小空闲连接数

HouseKeeper

推荐文章