什么是数据库连接池
应用程序和数据库建立连接的过程是这样的:
- 通过 TCP 协议的三次握手和数据库服务器建立连接,然后发送数据库用户的账号密码,等待数据库验证身份
- 验证通过后,我们可以提交 SQL 语句到数据库执行
- 如果不使用数据库连接池的话,我们每完成一次SQL查询,就需要关闭一次连接。这个涉及到 TCP 的四次挥手。
我们每使用一次SQL语句查询都需要创建连接,验证用户身份,然后操作结束后又主动关闭连接。这一系列操作耽误了时间。
合理的做法就应该是系统启动的时候就创建数据库连接,然后需要使用SQL查询的时候,就从系统拿出数据库连接对象并提交查询,查询完了就把连接对象还给系统。系统在整个程序运行结束的时候再把数据库连接关闭。
考虑到一般数据库应用都是 Web 多用户并发应用,那么只有一个数据库连接对象肯定不够用,所以系统启动的时候就应该多创建几个数据库连接对象供多个线程使用,这一批数据库连接对象集合在一起就被称之为数据库连接池。类似于内存池,线程池一样的存在,典型的空间换时间的做法。
以后应用程序访问数据库时,就不是直接创建数据库连接了,而是向数据库连接池申请一个已经存在的连接,使用完毕后再归还给数据库连接池,供给其他线程使用,以减少创建和断开数据库连接的次数,提高数据库的访问效率。
参考
- https://www.zhihu.com/question/349816338/answer/854647922
- (210条消息) 谈谈数据库连接池的原理_敦格的博客-CSDN博客_数据库连接池