【发布时间】:2010-05-24 10:24:17
【问题描述】:
以下哪种方法更好:连接池或每线程 JDBC 连接?
【问题讨论】:
标签: java connection connection-pooling thread-local
以下哪种方法更好:连接池或每线程 JDBC 连接?
【问题讨论】:
标签: java connection connection-pooling thread-local
连接池肯定而且几乎总是如此。
创建新的数据库连接对性能的影响很大。并且不同的数据库引擎(取决于许可或只是设置)具有不同的最大连接数(有时甚至为 1,通常不超过 50)。
使用 Per-Thread 连接的唯一原因是如果您知道有一定数量的持久线程(例如 10 个)。我无法想象现实世界中的这种情况。
【讨论】:
绝对是连接池。绝对没有理由为每个线程创建一个新连接。但是,例如,对整个 HTTP 请求使用相同的连接可能是有意义的(尤其是在您需要事务的情况下)。
您可以轻松地将连接池框架配置为具有最小和最大连接数,具体取决于您使用的数据库。但在将最大连接数设置得太高之前,如果遇到性能问题,请尝试使用缓存。
【讨论】:
对于网络应用程序,连接池通常是正确的答案,因为其他原因已经提供了。
对于大多数针对数据库运行的桌面应用程序,连接池并不好,因为您只需要一个连接,而拥有多个连接会消耗数据库服务器上的资源。 (乘以用户数量。)这里的选择是在单个持久连接之间,或者只是按需创建连接。第一个导致更快的查询,因为您没有建立和拆除连接的开销。第二种速度较慢,但对数据库服务器的要求也较低。
【讨论】: