SQL Server Complex Add / Update объединяет миллионы строк ежедневно - PullRequest
0 голосов
/ 26 мая 2019

У меня есть 7 отчетов, которые загружаются ежедневно поздней ночью.

Эти отчеты можно скачать в формате csv / xml. Я загружаю их в формате csv, так как они эффективно используют память.

Этот процесс выполняется в фоновом режиме и управляется Hangfire.

После их загрузки я использую dapper для запуска хранимой процедуры, которая вставляет / обновляет / обновляет данные, используя операторы слияния. Эта хранимая процедура имеет семь параметров табличных значений.

Вместо удаления я обновляю столбец IsActive этой записи на false.

Обратите внимание, что в 2 отчетах содержится более 1 миллиона записей.

Я получаю исключения тайм-аута только в Azure SQL. В SQL Server все работает нормально. В качестве обходного пути я увеличил время ожидания для этого запроса до 1000.

Это приложение работает в Azure s2.

Я размышлял над возможностью отправки xml, но обнаружил, что SQL Server медленно обрабатывает xml, что неэффективно.

Я также не могу использовать SqlBulkCopy, так как мне приходится обновляться в зависимости от некоторых условий.

Также обратите внимание, что в будущем будет добавлено больше отчетов.

Кроме того, при добавлении нового отчета появляется большое количество вставок. Если ранее добавленный отчет запускается снова, запускаются большинство обновлений.

В настоящее время эти таблицы не имеют индексов, только первичный ключ кластеризованного целого числа.

Каждая строка имеет уникальный код. Этот код используется для определения необходимости вставки / обновления / удаления

Можете ли вы порекомендовать способ повышения производительности?

1 Ответ

0 голосов
/ 26 мая 2019

Ваш источник вводит все данные?Будь они обновлены / новые.Я предполагаю, что, говоря уникальный код (вставить / обновить / удалить), вы рассматриваете только изменения (Delta).Если нет, то это одна область.Другое - рассмотреть параллелизм.Я думаю, тогда вам нужно иметь разные хранимые процедуры для каждой таблицы.Независимые таблицы могут обрабатываться вместе

...