徐无忌MySQL笔记:什么是数据库连接池?高并发场景下如何优化?

完成:第一遍

1.什么是池技术?

池技术(Pool)目的是为了优化服务器应用程序性能、提高执行效率、降低系统资源开销

这里所说的池是一种广义上的池,比如数据库连接池、线程池、内存池、对象池等

2.数据库连接有什么特点?

特点一:数据库连接的创建是一个很耗时的操作

特点二:对于web 应用,高并发很常见,在这种情况下,频繁的进行数据库连接操作势必占用很多的系统资源,网站的响应速度必定下降,严重的甚至会造成服务器的崩溃

特点三:对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将不得不重启数据库

特点四:需要控制能够创建的连接对象数,如连接过多,会导致服务器内存泄漏

特点五:数据库连接是一种稀缺的资源,为了保障网站的正常使用,应该对其进行妥善管理

3.数据库连接池的原理是什么?

基本思想就是为数据库连接建立一个“缓冲池”

在程序初始化的时候,预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去

当别人使用时,把刚刚的连接给他们使用,避免了一次建立数据库连接和断开的操作时间消耗

4.数据库连接池如何建立?

一般在系统初始化时,连接池会根据系统配置建立,并在池中建立几个连接对象,以便使用时能从连接池中获取

java 中提供了很多容器集合类,可以方便的构建连接池,例如 Vector(线程安全类),linkedlist 等

5.数据库连接池如何管理?

当客户请求数据库连接时
首先查看连接池中是否有空闲连接

如果存在空闲连接,则将连接分配给客户使用并作相应处理

如果没有空闲连接,如果当前的连接数还没达到最大连接数,就创建一个新的连接;如果达到,就按最大等待时间进行等待,如果超出最大等待时间,则抛出异常给客户
释放数据库连接时,根据条件判断,是删除还是供再次复用

6.数据库连接池的好处有哪些?

减少连接的创建时间、降低系统开销

更快的系统响应速度

统一的连接管理

7.常见的开源数据库连接池技术有哪些?

常见的开源数据库连接池有C3P0、DBCP、Tomcat Jdbc Pool、BoneCP、Druid等

Springboot从2.0版本后将HikariCP(日本人写的)作为默认数据库连接池

Druid由阿里巴巴开源,是国内目前使用最广泛的数据库连接池