重用数据库连接池中的连接

Reuse connection in database connection pool

据我了解,数据库连接池通常是这样工作的:

  1. 在应用程序初始化期间创建 n 个连接并将它们放入缓存(例如列表)
  2. 一个线程需要一个连接来对数据库做一些操作,return连接完成后返回
  3. 当缓存中没有可用连接时,step2 中的线程将等待连接被推回缓存

我的问题是:

我们是否可以在从池中获取后通过一个连接执行多个数据库操作而不是执行一个数据库操作然后将其放回?它似乎更有效率,因为它节省了获取和恢复连接的时间。 (在多线程情况下,当addget从连接池中加锁时肯定有一定的开销)

有人可以帮忙吗?谢谢!

是的,每次从池中获取数据库连接都可以用于多个操作,这种行为对于使用池的数据库应用程序来说是典型的。例如,在处理对 REST 服务的请求期间,连接可能会被获取一次并重复用于多个操作。此生命周期通常还涉及将这些操作作为数据库中的单个事务进行管理。