在进行数据库编程时,连接池有什么作用?

Posted 四猿外

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在进行数据库编程时,连接池有什么作用?相关的知识,希望对你有一定的参考价值。

由于创建连接和释放连接都有很大的开销(尤其是数据库服务器不在本地时, 每次建立连接都需要进行TCP 的三次握手,释放连接需要进行TCP 四次握手,造成的开销是不可忽视的),为了提升系统访问数据库的性能, 可以事先创建若干连接置于连接池中,需要时直接从连接池获取, 使用结束时归还连接池而不必关闭连接,从而避免频繁创建和释放连接所造成的开销,这是典型的用空间换取时间的策略( 浪费了空间存储连接,但节省了创建和释放连接的时间)。

池化技术在Java 开发中是很常见的,在使用线程时创建线程池的道理与此相同。基于Java 的开源数据库连接池主要有: C3P0、Proxool、DBCP、BoneCP、Druid 等。

在计算机系统中时间和空间是不可调和的矛盾,理解这一点对设计满足性能要求的算法是至关重要的。

大型网站性能优化的一个关键就是使用缓存,而缓存跟上面讲的连接池道理非常类似, 也是使用空间换时间的策略。可以将热点数据置于缓存中,当用户查询这些数据时可以直接从缓存中得到, 这无论如何也快过去数据库中查询。

当然,缓存的置换策略等也会对系统性能产生重要影响, 对于这个问题的讨论已经超出了这里要阐述的范围。

以上是关于在进行数据库编程时,连接池有什么作用?的主要内容,如果未能解决你的问题,请参考以下文章

福利JDBC与连接池有何关系?内附JDBC技术学习资料

为啥使用 tomcat 进行数据库连接池有两种选择(tomcat-dbcp 和 tomcat-jdbc)?

数据库连接池是啥

阿里面试官:数据库连接池有必要吗?你对它的底层实现了解过没?

在 Weblogic 中复制连接池有啥好处吗?

Day860.高性能数据库连接池HiKariCP -Java 并发编程实战