【问题标题】:SQL connection pooling in Azure FunctionsAzure Functions 中的 SQL 连接池
【发布时间】:2016-12-18 12:53:48
【问题描述】:

在传统的网络服务器中,您将拥有一个 SQL 连接池和与数据库的持久连接。

但我正在考虑将我的整个应用程序创建为 Azure Functions。 这些函数是否会在每次调用 SQL 服务器时创建一个新连接?

【问题讨论】:

  • 作为附录,对于 sql 连接池也不支持 python。我在预览版中使用 python 尝试了 Azure 函数,并使用了 sql-alchemy。我联系了 azure 支持,没有办法建立持久的数据库连接。

标签: azure-sql-database azure-functions


【解决方案1】:

Azure Functions 当前没有 SQL 作为输入或输出绑定的选项,因此您需要直接使用 SqlClient 类来建立连接并发出查询。

只要您遵循处置 SQL 连接的最佳实践(例如:C# SQLConnection pooling),您就应该默认使用池化。

以下是从函数将记录插入 SQL 的完整示例:https://www.codeproject.com/articles/1110663/azure-functions-tutorial-sql-database

【讨论】:

  • 但是由于每个触发事件都实例化了无服务器函数,所以 SqlClient 库的连接池功能是否实际上是多余的?即使函数保持温暖,它也一次只用于一个触发器,如果​​并行化,那么每个实例都会有一个冗余连接池。
  • 我同意 Semprini。
  • @Semprini 创建连接有一些相关的成本,这就是建议有一个连接池的原因。您可以决定连接的数量,具体取决于功能应用程序中可用的功能数量等,这样创建连接就不会为“预热实例”付出任何代价。
  • 我认为默认情况下没有可用的连接池。
【解决方案2】:

虽然已经回答了这个问题,但我相信这个答案可以提供更多信息。

如果您没有使用连接池,那么您可能在每次调用函数时都在创建连接。创建连接具有相关成本,对于预热的实例,使用连接池是recommended。最大连接数也应谨慎选择,因为可能有几个并行功能应用程序正在运行(按计划)。

This 是连接池的例子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-29
    • 2019-02-15
    • 1970-01-01
    • 2012-11-15
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多