在进行数据库编程时,连接池有什么作用?
Posted 四猿外
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在进行数据库编程时,连接池有什么作用?相关的知识,希望对你有一定的参考价值。
由于创建连接和释放连接都有很大的开销(尤其是数据库服务器不在本地时, 每次建立连接都需要进行TCP 的三次握手,释放连接需要进行TCP 四次握手,造成的开销是不可忽视的),为了提升系统访问数据库的性能, 可以事先创建若干连接置于连接池中,需要时直接从连接池获取, 使用结束时归还连接池而不必关闭连接,从而避免频繁创建和释放连接所造成的开销,这是典型的用空间换取时间的策略( 浪费了空间存储连接,但节省了创建和释放连接的时间)。
池化技术在Java 开发中是很常见的,在使用线程时创建线程池的道理与此相同。基于Java 的开源数据库连接池主要有: C3P0、Proxool、DBCP、BoneCP、Druid 等。
在计算机系统中时间和空间是不可调和的矛盾,理解这一点对设计满足性能要求的算法是至关重要的。
大型网站性能优化的一个关键就是使用缓存,而缓存跟上面讲的连接池道理非常类似, 也是使用空间换时间的策略。可以将热点数据置于缓存中,当用户查询这些数据时可以直接从缓存中得到, 这无论如何也快过去数据库中查询。
当然,缓存的置换策略等也会对系统性能产生重要影响, 对于这个问题的讨论已经超出了这里要阐述的范围。
以上是关于在进行数据库编程时,连接池有什么作用?的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 tomcat 进行数据库连接池有两种选择(tomcat-dbcp 和 tomcat-jdbc)?