【问题标题】:When should we close database connection我们什么时候应该关闭数据库连接
【发布时间】:2018-05-08 21:10:31
【问题描述】:

我正在使用 Spark 创建一个 REST API。

我也在使用 ormLite + mysql 数据库作为持久性数据库。

现在的问题是我应该何时关闭与数据库的连接?

或者我应该在每次请求后关闭连接?

这就是我连接数据库的方式:

JdbcConnectionSource connectionSource = JdbcConnectionSource(databaseUrl);

connectionSource.setUsername("myUsername");
connectionSource.setPassword("myPassword");

【问题讨论】:

标签: java mysql rest ormlite spark-java


【解决方案1】:

数据库连接的打开成本很高,因此很有价值。

我建议您调查一下是否可以使用在后台管理打开和关闭连接的连接池。

我使用connection pool developed for Tomcat 取得了一些成功。可以单独使用它,这就是我在几个 Sparkjava 应用程序中所做的。

当您在其上调用 close() 时,连接将返回到池中。这意味着您在每次通话后关闭连接。当您向池请求连接时,该连接可能会被重新使用。除非它是池杀死的旧连接。这些是您作为应用程序开发人员不必关心的细节。从您的角度来看,您可以在需要时获得连接。

【讨论】:

【解决方案2】:

好吧,实际上基于Gray's 评论,这就是您使用 Spark 的方式:

JdbcPooledConnectionSource connectionSource = JdbcPooledConnectionSource(databasePath, username, password);

我正在做的是使用JdbcPooledConnectionSource 而不是JdbcConnectionSource,因此我们不需要为每个请求创建新连接或为所有请求创建单个连接。

但这还不是全部,我们需要一些额外的东西来获得更好的性能:

connectionSource.setMaxConnectionsFree(10)
connectionSource.setMaxConnectionAgeMillis(20000)
connectionSource.setCheckConnectionsEveryMillis(5000)

通过这样做,您无需自行关闭连接。

顺便说一句,如果您认为此参数需要更改,请告诉我 ;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    相关资源
    最近更新 更多