У меня есть 7 отчетов, которые загружаются ежедневно поздней ночью.
Эти отчеты можно скачать в формате csv / xml. Я загружаю их в формате csv, так как они эффективно используют память.
Этот процесс выполняется в фоновом режиме и управляется Hangfire.
После их загрузки я использую dapper для запуска хранимой процедуры, которая вставляет / обновляет / обновляет данные, используя операторы слияния. Эта хранимая процедура имеет семь параметров табличных значений.
Вместо удаления я обновляю столбец IsActive
этой записи на false.
Обратите внимание, что в 2 отчетах содержится более 1 миллиона записей.
Я получаю исключения тайм-аута только в Azure SQL. В SQL Server все работает нормально. В качестве обходного пути я увеличил время ожидания для этого запроса до 1000.
Это приложение работает в Azure s2.
Я размышлял над возможностью отправки xml, но обнаружил, что SQL Server медленно обрабатывает xml, что неэффективно.
Я также не могу использовать SqlBulkCopy
, так как мне приходится обновляться в зависимости от некоторых условий.
Также обратите внимание, что в будущем будет добавлено больше отчетов.
Кроме того, при добавлении нового отчета появляется большое количество вставок. Если ранее добавленный отчет запускается снова, запускаются большинство обновлений.
В настоящее время эти таблицы не имеют индексов, только первичный ключ кластеризованного целого числа.
Каждая строка имеет уникальный код. Этот код используется для определения необходимости вставки / обновления / удаления
Можете ли вы порекомендовать способ повышения производительности?