我们应该什么时候关闭数据库连接
When should we close database connection
我正在使用 Spark 创建休息 API。
我还在使用 ormLite + mysql 数据库作为持久数据库。
现在的问题是我应该什么时候关闭与数据库的连接?
还是我应该在每次请求后关闭连接?
这就是我连接到数据库的方式:
JdbcConnectionSource connectionSource = JdbcConnectionSource(databaseUrl);
connectionSource.setUsername("myUsername");
connectionSource.setPassword("myPassword");
数据库连接的打开成本很高,因此很有价值。
我建议您调查是否可以使用连接池来管理后台打开和关闭连接。
我使用 connection pool developed for Tomcat 取得了一些成功。可以单独使用它,这就是我在几个 Sparkjava 应用程序中所做的。
当您在其上调用 close() 时,连接返回到池中。这意味着您在每次调用后关闭连接。当您向池请求连接时,连接可能会被重新使用。除非它是池杀死的旧连接。作为应用程序开发人员,您不必关心这些细节。从您的角度来看,您可以在需要时获得连接。
好的,实际上基于 Gray's 评论,这就是您使用 Spark 的方式:
JdbcPooledConnectionSource connectionSource = JdbcPooledConnectionSource(databasePath, username, password);
我正在做的是使用 JdbcPooledConnectionSource
而不是 JdbcConnectionSource
所以我们不需要为每个请求创建一个新连接或为所有请求创建一个连接。
但这还不是全部,我们还需要一些额外的东西来提高性能:
connectionSource.setMaxConnectionsFree(10)
connectionSource.setMaxConnectionAgeMillis(20000)
connectionSource.setCheckConnectionsEveryMillis(5000)
这样做你就不需要自己关闭连接了。
顺便说一句,如果您认为此参数需要更改,请告诉我;)
我正在使用 Spark 创建休息 API。
我还在使用 ormLite + mysql 数据库作为持久数据库。
现在的问题是我应该什么时候关闭与数据库的连接?
还是我应该在每次请求后关闭连接?
这就是我连接到数据库的方式:
JdbcConnectionSource connectionSource = JdbcConnectionSource(databaseUrl);
connectionSource.setUsername("myUsername");
connectionSource.setPassword("myPassword");
数据库连接的打开成本很高,因此很有价值。
我建议您调查是否可以使用连接池来管理后台打开和关闭连接。
我使用 connection pool developed for Tomcat 取得了一些成功。可以单独使用它,这就是我在几个 Sparkjava 应用程序中所做的。
当您在其上调用 close() 时,连接返回到池中。这意味着您在每次调用后关闭连接。当您向池请求连接时,连接可能会被重新使用。除非它是池杀死的旧连接。作为应用程序开发人员,您不必关心这些细节。从您的角度来看,您可以在需要时获得连接。
好的,实际上基于 Gray's 评论,这就是您使用 Spark 的方式:
JdbcPooledConnectionSource connectionSource = JdbcPooledConnectionSource(databasePath, username, password);
我正在做的是使用 JdbcPooledConnectionSource
而不是 JdbcConnectionSource
所以我们不需要为每个请求创建一个新连接或为所有请求创建一个连接。
但这还不是全部,我们还需要一些额外的东西来提高性能:
connectionSource.setMaxConnectionsFree(10)
connectionSource.setMaxConnectionAgeMillis(20000)
connectionSource.setCheckConnectionsEveryMillis(5000)
这样做你就不需要自己关闭连接了。
顺便说一句,如果您认为此参数需要更改,请告诉我;)