Azure:将连接保持在静态变量中以重用它。好的策略?

时间:2018-10-03 10:10:49

标签: azure database-connection

我正在处理连接到DB(Java)的Azure函数,我想这很常见。

该功能可能是冷启动或热启动,大多数情况下我的应该保持温暖(每5分钟调用一次)。该连接存储在一个静态变量的池(JDBCPooledConnectionSource)中,因此从理论上讲,每次热启动都应重新使用该连接,以提高效率。

这是一个好的策略还是会引起问题?例如,光纤连接断开,但其引用仍在堆中:当使用该引用进行查询时,可能会发生异常。

为避免调用断开的连接,我可以使用一个非静态变量来存储连接。这应该更安全,但效率较低,因为应该在每次通话时重新创建连接。

哪种策略最好?我想有很多功能可以做到这一点(连接到数据库),所以可以肯定的是,比我更有经验的人知道最佳策略或常见错误。

1 个答案:

答案 0 :(得分:0)

我之所以写答案,是因为发现有关我如何使用connectionSource()的错误。我执行查询时没有释放连接:

ConnectionSource cs = getConnectionSource();
DatabaseConnection dbc = cs.getReadOnlyConnection("my_table");
dbc.executeStatement("Select count(*) from my_table;", JdbcDatabaseConnection.DEFAULT_RESULT_FLAGS);

,并且连接从未被释放,因此它也没有被删除/重用。现在,我添加了以下内容,它可以按预期工作:

cs.releaseConnection(dbc);
相关问题