Лазурная долговечная функция.Какова ожидаемая пропускная способность деятельности? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть функция активности функции 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);
}

Вопросы:

  1. Является ли это ожидаемой пропускной способностью действия функции длительного действия?

  2. Есть ли способ ускорить действие функции Durable?

...