【发布时间】:2013-04-12 03:56:23
【问题描述】:
PS:我正在构建一个小型的javafx 应用程序,其后端带有小型h2 数据库(5
表)。
【问题讨论】:
标签: java jdbc threadpool connection-pooling h2
PS:我正在构建一个小型的javafx 应用程序,其后端带有小型h2 数据库(5
表)。
【问题讨论】:
标签: java jdbc threadpool connection-pooling h2
来自 Jon Skeet 对 What is the benefit of Connection and Statement Pooling? 的回答:
创建到数据库服务器的网络连接是(相对) 昂贵的。同样要求服务器准备一条 SQL 语句是 (相对)昂贵。
使用连接/语句池,您可以重用现有的 连接/准备好的语句,避免了启动一个 连接、解析SQL等
以下内容,来自Kent Boogaart's answer:
我不熟悉c3p0,但是池连接的好处 和声明包括:
性能。连接到数据库既昂贵又缓慢。池连接可以保持物理连接到数据库, 并在需要数据库访问的各种组件之间共享。 这样,连接费用一次性支付并在所有费用中摊销 消费组件。
诊断。如果您有一个负责连接数据库的子系统,那么诊断和分析数据库变得更加容易 连接使用情况。
可维护性。同样,如果您有一个负责分发数据库连接的子系统,您的代码将更易于维护 而不是每个组件都连接到数据库本身。
【讨论】:
创建连接的成本很高,而且为每个事务创建一个可能只需要几毫秒的新连接是没有意义的。在池中管理数据库连接意味着应用程序可以以一种避免连接创建时间的方式执行数据库事务(连接仍然需要创建,但它们都是在启动时创建的)。不利的一面是,如果所有连接都在使用中,并且需要另一个连接,则请求线程将不得不等待,直到一个连接返回到池中。
【讨论】: