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

由于创建连接和释放连接都有很大的开销(尤其是数据库服务器不在本地时,每

次建立连接都需要进行 TCP 的三次握手,释放连接需要进行 TCP 四次握手,造成

的开销是不可忽视的),为了提升系统访问数据库的性能,可以事先创建若干连

接置于连接池中,需要时直接从连接池获取,使用结束时归还连接池而不必关闭

连接,从而避免频繁创建和释放连接所造成的开销,这是典型的用空间换取时间

的策略(浪费了空间存储连接,但节省了创建和释放连接的时间)。池化技术在

Java 开发中是很常见的,在使用线程时创建线程池的道理与此相同。基于 Java 的

开源数据库连接池主要有:C3P0ProxoolDBCPBoneCPDruid 等。

补充:在计算机系统中时间和空间是不可调和的矛盾,理解这一点对设计满足性

能要求的算法是至关重要的。大型网站性能优化的一个关键就是使用缓存,而缓

存跟上面讲的连接池道理非常类似,也是使用空间换时间的策略。可以将热点数

据置于缓存中,当用户查询这些数据时可以直接从缓存中得到,这无论如何也快

过去数据库中查询。当然,缓存的置换策略等也会对系统性能产生重要影响,对

于这个问题的讨论已经超出了这里要阐述的范围。

原文地址:https://www.cnblogs.com/programb/p/13021387.html