Мы используем устройство SQL Server PDW для нашего хранилища данных. Одна из таблиц на нашем складе - это реплицированная таблица с 20 миллионами строк. В рамках нашего процесса ETL нам нужно удалить старые записи из этого измерения; однако мы видим, что обновление нескольких записей (<100) занимает более 1 часа. Это то, что я хотел бы улучшить, если смогу.
Естественно, одним из вариантов, о котором я подумал, было изменение этого измерения с реплицированного на распределенное. Мои тесты показывают, что это решило бы проблему с процессом ETL, который занял бы много времени (от 1,5 часов до 30 секунд), но это затронет все объединения с распределенной версией этого измерения, поскольку объединения почти никогда не основаны на одном и том же распределении. колонка. Когда я смотрю на план выполнения некоторых из этих запросов, я обычно вижу либо операцию ShuffleMove, либо операцию BroadcastMove .
Итак, мой вопрос к гуру PDW:
Есть ли что-нибудь еще, что можно сделать, чтобы улучшить производительность обновления записей в реплицированной версии этого измерения?
Опять же, переход к распределенной таблице не кажется лучшим решением, поскольку он затронет сотни уже написанных SQL-запросов и отчетов, разработанных другими людьми.