当前位置: 首页 > 科技观察

比c3p0快200倍的数据库连接池,这么牛逼?

时间:2023-03-17 16:38:40 科技观察

为什么需要连接池什么是HikariCP为什么HikariCP这么快与Druid相比如何选择什么是数据库连接池:连接池是一种常用的技术,为什么需要连接池?这需要从TCP说起。如果我们的服务器和数据库不是部署在同一台机器上,那么服务器每次查询数据库,都要先建立连接,一般是TCP连接,需要三次握手建立连接。假设后台服务与数据库的单向访问需要10ms,那么建立连接需要30ms,TCP也有慢启动机制。事实上,一次查询可能不止一次TCP往返,查询效率会大大降低。为什么需要连接池:为了解决上面的问题,我们需要维护一些长链接,这样就不用每次都建立连接了。毕竟建立连接除了需要时间之外,还需要一些其他的系统资源。还有一个好处就是连接池让我们更容易管理。一方面可以防止数据库资源被某些API占用,另一方面也可以避免资源泄露。什么是HikariCP?HikariCP是由旅日美国程序员开源的一个数据库连接池组件。代码很轻,速度也很快。根据官方数据,在i7开启32个线程32个连接,随机进行数据库读写操作的情况下,HikariCP的速度是常用的C3P0数据库连接池的数百倍。在SpringBoot2.0中,官方也推荐使用HikariCP。HikariCP为什么这么快1.字节码更加精简,所以可以将更多的代码加载到缓存中。2.实现了无锁集合类型,减少并发带来的资源竞争。3、使用自定义数组类型,与ArrayList相比性能有很大的提升。4、优化CPU的时间片算法,尽可能在一个时间片内完成各种运算。与Druid对比在github上,有网友发了AlibabaDruid与hikari的对比,认为hikari在性能上彻底秒杀阿里巴巴的Druid连接池。对此,阿里的工程师也进行了一定程度的回应,称Druid的性能略差是因为锁机制的不同,而Druid提供的功能更多,两者的侧重点不同。如何选择:选择哪一个见仁见智,但都是开源产品。阿里的Druid有中文开源社区,交流起来比较方便。经过在阿里多系统的实验,肯定是很稳定的。Hikari是SpringBoot2.0默认的连接池,在全球范围内被广泛使用。对于大多数企业来说,使用哪一个几乎是一样的。毕竟性能瓶颈一般不在连接池。大家可以根据自己的喜好自由选择。