池技术目的是为了优化服务器应用程序性能、提高执行效率、降低系统资源开销
这里所说的池是一种广义上的池,比如数据库连接池、线程池、内存池和对象池等
数据库连接
数据库连接的创建是一个很耗时的操作
对于web应用,高并发很常见,在这种情况下,频繁的进行数据库连接操作势必占用很多的系统资源,网站的响应速度必定下降,严重的甚至会造成服务器的崩溃
对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄露,最终将不得不重启数据库。
需要控制能够创建的连接对象数,如连接过多,会导致
服务器内存泄漏数据连接是一种
稀缺的资源,为了保障网站的正常使用,应该对其进行
妥善管理
数据库连接池
基本思想就是为数据库连接建立一个|缓冲池“在程序初始化的时候,预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从”缓冲池“中取出一个,使用完毕之后再放回去当别人使用时,把刚刚建立好的连接给他们使用,避免了一次建立数据库连接的断开的操作时间消耗。
连接池的管理
当客户请求数据库连接时,首先查看连接池中是否有空闲连接,如果存在空闲连接,则将连接分配给客户使用并作相应处理如果没有空闲连接,如果当前的连接数还没达到最大连接数,就创建一个新的连接;如果达到,就按最大等待时间进行等待,如果超出最大等待时间,
则抛出异常给用户。释放数据库连接时,根据条件判断,是删除还是供再次复用。
优点
减少连接的创建时间,降低系统开销更快的系统响应速度统一的连接管理
发展
常见的数据库连接池有C3P0, DBCP, Tomcat Jdbc Pool, BoneCP, Druid等Springboot从2.0版本后将HikariCP作为默认数据库连接池,因为速度很快。Druid由阿里巴巴开源,是国内目前使用最广泛的数据库连接池,它提供了很多监控的功能。