在数据库连接池中,
- 每个连接是否对应数据库中的 1 个线程?
- 这真的很重要吗?我的意思是,可能有一个 threadPool 执行器,执行连接对象必须执行的任何操作?
我想知道它是如何工作的,因为这将有助于理解这个东西实际上是如何调整的。
到目前为止我的理解是“一个连接 - 一个线程”。否则为什么大多数数据库会阻塞?
最佳答案
连接池是客户端(即 Java 中)的连接池。
连接池就是数据库的打开连接池。这些不绑定(bind)到线程,任何数量的线程都可以在任何给定时间从池中请求连接 - 如果连接可用,池将批准该请求,如果没有,它将创建一个新连接,阻止或拒绝该连接请求(取决于实现)。这里的主要思想是连接数少于线程,另一个目的是如果有许多短的数据库操作,则保持这些连接打开(创建数据库连接是一项昂贵的操作) )。
在服务器端,这取决于数据库实现。我希望大多数数据库服务器每个连接使用一个线程 - 毕竟有人必须监听打开的套接字。对于许多数据库引擎来说,这可能要复杂得多,例如可能有一个模块正在监听套接字,然后将查询发送到另一个可能运行不同数量线程的模块。
关于java - 数据库连接池中的每个连接是否都由一个线程支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33422845/