java - 数据库连接池中的每个连接是否都由一个线程支持?

标签 java multithreading database-connection connection-pooling

在数据库连接池中,

  • 每个连接是否对应数据库中的 1 个线程?
  • 这真的很重要吗?我的意思是,可能有一个 threadPool 执行器,执行连接对象必须执行的任何操作?

我想知道它是如何工作的,因为这将有助于理解这个东西实际上是如何调整的。

到目前为止我的理解是“一个连接 - 一个线程”。否则为什么大多数数据库会阻塞?

最佳答案

连接池是客户端(即 Java 中)的连接池。

连接池就是数据库的打开连接池。这些不绑定(bind)到线程,任何数量的线程都可以在任何给定时间从池中请求连接 - 如果连接可用,池将批准该请求,如果没有,它将创建一个新连接,阻止或拒绝该连接请求(取决于实现)。这里的主要思想是连接数少于线程,另一个目的是如果有许多短的数据库操作,则保持这些连接打开(创建数据库连接是一项昂贵的操作) )。

在服务器端,这取决于数据库实现。我希望大多数数据库服务器每个连接使用一个线程 - 毕竟有人必须监听打开的套接字。对于许多数据库引擎来说,这可能要复杂得多,例如可能有一个模块正在监听套接字,然后将查询发送到另一个可能运行不同数量线程的模块。

关于java - 数据库连接池中的每个连接是否都由一个线程支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33422845/

相关文章:

c++ - 休眠一个异步任务

php - 使用存储过程建立 MySQL 数据库连接

java与ms access不显示数据库结果

java - java中的静态变量和多线程

c++ - 在线程中等待一段时间,或者直到条件发生

java - 我似乎无法通过我的 Android 应用程序连接到远程服务器

java - 通过 Gateway Java 在缓存中设置代理 Java 对象的数据类型 java.util.Date 属性

java - 如何实例化 Kafka Connect Schema 数组

java - 表格(错误: cannot find symbol )

java - 要映射的实体<字符串,对象>