应用程序直接获取数据库连接的缺点用户每次请求都需要获取数据库连接,而数据库连接的创建通常会消耗比较大的资源和需要很长时间来创建。假设网站一天有10万次访问,数据库服务器需要创建10万个连接,这极大地浪费了数据库资源,容易造成数据库服务器内存溢出和机器膨胀。数据库连接池的基本概念所谓数据库连接池技术就是用来分配、管理和释放数据库连接的。你可能会问,我好像直接用JDBC就可以实现这些功能了。嗯,你说的对,JDBC确实可以,但是,你还记得吗,当我们使用JDBC技术的时候,每次用完,连接都会被关闭;是否必须重新打开数据库连接?其实数据库连接资源是非常宝贵的,我们在小项目中是看不到的。在高并发项目中,你会发现频繁打开和关闭数据库连接是对的。服务器的一种破坏,极大地影响了效率。那么,数据库连接池是如何工作的呢?实现思路是这样的:每有一次访问,数据库连接池就会为用户分配一个数据库连接。当用户用完连接后,连接池会回收这个连接,放回一个连接集合中。原理是这样的。我们来看这张图加深一下印象:这个你可能还不太清楚,数据库连接池要考虑的事情比上面的要复杂得多,数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重用现有的数据库连接而不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接,避免因不释放数据库连接而造成的数据库连接未命中。该技术可以显着提高数据库操作的性能。影响因素数据库连接池初始化时,会创建一定数量的数据库连接,放入连接池中。这些数据库连接数由最小数据库连接数设置。不管这些数据库连接是否被使用,连接池总是会保证至少有这么多的连接。连接池中的最大数据库连接数限制了连接池可以占用的最大连接数。当应用程序从连接池中请求的连接数超过最大连接数时,这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑以下因素:最小连接数:是连接池保留的数据库连接,所以如果应用程序不使用数据库连接很多,就会浪费大量的数据库连接资源。最大连接数:连接池可以申请的最大连接数。如果数据库连接请求数超过了数量,后续的数据库连接请求会被加入等待队列,影响以后的数据库操作,如果最小连接数和最大连接数相差很大:那么第一个连接request会盈利,后续超过最小连接数的连接请求等同于建立新的数据库连接。但是,这些大于最小连接数的数据库连接在使用后不会立即释放,会放在连接池中等待重用或者空间超时后释放。连接池的基本思想是在系统初始化时,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,不是建立新的连接,而是从中取出一个已建立的空闲连接对象连接池。使用后,用户并没有关闭连接,而是将连接放回连接池中,以供下一次请求访问。连接的建立和断开由连接池自己管理。同时,还可以通过设置连接池的参数来控制连接池的初始连接数、连接数上下限、每个连接的最大使用次数、最大空闲时间等。连接池。还可以通过自身的管理机制监控数据库连接数、使用情况等。
