我有一个Azure Durable函数活动函数,该函数以递归方式遍历一些嵌套数据。在每次递归中,我都会在SQL Server数据库中插入一行。
除了对每次迭代构造一个SQL INSERT查询之外,我对数据没有任何特殊处理,但是我每秒只能获得3-5次插入的吞吐量。我在本地运行Durable函数时看到了这一点,我期望吞吐量是现在看到的100倍。
我创建SQL命令并像这样执行它们:
using (OdbcCommand com = await CreateCommand("TableName", Values, forignKey, connection))
using (OdbcDataReader reader = com.ExecuteReader())
{
while (reader.Read())
{
insertedPK = reader.GetString(0);
}
}
。
private static Task<OdbcCommand> CreateCommand(string tableName, Dictionary<string, object> values, string parentPK, OdbcConnection connection, TraceWriter log)
{
List<OdbcParameter> parameters = new List<OdbcParameter>();
List<string> names = new List<string>();
foreach (var kv in values)
{
if (kv.Value != null)
{
OdbcParameter p = new OdbcParameter("?", OdbcType.NVarChar) { Value = kv.Value };
parameters.Add(p);
names.Add($"[{kv.Key}]");
}
}
string command = $"INSERT INTO [{tableName}] ({string.Join(", ", names.ToArray())}) OUTPUT Inserted.PK"
+ $" VALUES ({string.Join(", ", Enumerable.Repeat('?', names.Count))})";
OdbcCommand cmd = new OdbcCommand
{
CommandText = command,
Connection = connection
};
cmd.Parameters.AddRange(parameters.ToArray());
return Task.FromResult(cmd);
}
问题:
这是持久功能活动的预期吞吐量吗?
是否有任何方法可以加快持久功能的活动?