Параллельные обновления в одном скрипте - PullRequest
0 голосов
/ 23 января 2019

У меня есть скрипт, который в какой-то момент обновляет несколько больших таблиц.Таблицы не зависят друг от друга, имеют более 40 млн строк, и каждая строка обновляется путем сброса целочисленного значения.Что-то вроде:

обновление таблицы table_with_40_mil_rows set integer_column = 1

обновление таблицы table_with_70_mil_rows set integer_column = 1

и т. Д.

Обработка каждого такого оператора занимает от8 и 15 минут.

Есть ли способ запустить 2 или более этих обновления таблицы параллельно?Диски довольно быстрые и доступно более 8 ядер.

Спасибо

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Vanilla T-SQL не даст столько возможностей для параллельного запуска нескольких обновлений. В качестве исключения - асинхронный сервисный брокер, но это сложная тема.

Более-менее простые способы:

  • Пакет служб SSIS, который выполняет несколько задач T-SQL параллельно
  • Несколько заданий агента SQL, которые запускаются одновременно одним основным заданием
  • Несколько окон SSMS, которые выполняют запросы параллельно
0 голосов
/ 23 января 2019

Не так долго, как в одном скрипте, работающем в одном соединении SQL Server нельзя заставить обрабатывать один сценарий асинхронным, многопоточным способом. По крайней мере, не в TSQL. Может быть, в процедуре CLR.

...