У меня есть функция активности функции 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);
}
Вопросы:
Является ли это ожидаемой пропускной способностью действия функции длительного действия?
Есть ли способ ускорить действие функции Durable?