连接池与每线程JDBC连接

时间:2010-05-24 10:24:18

标签: java connection connection-pooling thread-local

哪种方法更好:连接池还是每线程JDBC连接?

3 个答案:

答案 0 :(得分:0)

连接池肯定而且几乎总是。

创建新的数据库连接对性能而言代价非常高。不同的数据库引擎(取决于许可或只是设置)具有不同的最大连接数(有时甚至是1,通常不超过50)。

使用每线程连接的唯一原因是,如果您知道存在少量的持久线程(例如10个)。我无法想象现实世界中的这种情况。

答案 1 :(得分:0)

绝对是连接池。绝对没有理由为每个线程创建新连接。但是,例如,对整个HTTP请求使用相同的连接可能是有意义的(特别是如果您需要事务)。

您可以轻松地将连接池框架配置为具有最小和最大连接数,具体取决于您使用的数据库。但是在使用最大连接数之前,如果遇到性能问题,请尝试使用缓存。

答案 2 :(得分:0)

对于网络应用,连接池通常是其他已经提供的原因的正确答案。

对于针对数据库运行的大多数桌面应用程序,连接池并不好,因为您只需要一个连接并且有多个连接会占用数据库服务器上的资源。 (乘以用户数。)这里选择是在单个持久连接之间,或者只是按需创建连接。第一个导致更快的查询,因为您没有构建和拆除连接的开销。第二种是速度较慢,但​​对数据库服务器的要求也较低。