gpt4 book ai didi

Azure 函数支持连接池或任何其他方式重用同一数据库实例

转载 作者:行者123 更新时间:2023-12-03 03:49:46 25 4
gpt4 key购买 nike

由于 AWS Lambda 支持连接池,如 Link 所示.

根据我的要求,我将使用 kafka 的触发功能。但是对数据库的请求会非常频繁地发生,以至于它会使用很高的CPU百分比。因此,为了避免这种情况,我想使用连接池或任何其他方式来使用数据库上下文的同一实例。

最佳答案

在每次函数调用时创建新的 C# SqlConnection 对象不会对性能产生不良影响,因为 ADO.NET 已经为您管理了 SQL 连接池。所以如果你关闭一个连接,它就是 just put back into the pool这意味着您可以使用如下连接:

using System.Data.SqlClient;

const string connectionString = "..."; // Better get this from a Key Vault

[FunctionName("MyFunction")]
public static void Run(...)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open(); // Get a connection object from the pool
// Execute queries on connection
}
}

与Python和pyodbc类似,这里默认启用连接池,并且调用pyodbc.connect()可以使用该池:

import azure.functions as func
import pyodbc

connectionstring = "DRIVER=[...];SERVER=[...]"

def main(events: List[func.EventHubEvent]):
connection = pyodbc.connect(connectionstring)

with connection:
with connection.cursor() as cursor:
cursor.execute(f"SELECT [...] FROM [...]")
columns = [column[0] for column in cursor.description]
result = [dict(zip(columns, row)) for row in cursor.fetchall()]
print(result)
connection.close()

还有一个 JavaScript 示例 here .

编辑:在 @kiranpradeep 发表评论后更改了此答案

关于Azure 函数支持连接池或任何其他方式重用同一数据库实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67207199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com