Nous utilisons une appliance SQL Server PDW pour notre entrepôt de données. L'une des tables de notre entrepôt est une table répliquée avec environ 20 millions de lignes. Dans le cadre de notre processus ETL, nous devons expirer les anciens enregistrements de cette dimension; cependant, nous constatons que la mise à jour d'une poignée d'enregistrements (<100) prend plus d'une heure. C'est ce que j'aimerais améliorer si je le peux.
Naturellement, une option à laquelle j'ai pensé était de changer cette dimension de répliquée en distribuée. Mes tests montrent que cela résoudrait le problème avec le processus ETL prenant beaucoup de temps (de 1,5 heure à 30 secondes), mais toutes les jointures contre la version distribuée de cette dimension seraient affectées car les jointures ne sont presque jamais basées sur la même distribution colonne. Lorsque je regarde le plan d'exécution de certaines de ces requêtes, je vois généralement une opération ShuffleMove ou BroadcastMove .
Donc ma question au gourou PDW est la suivante:
Y a-t-il autre chose à faire pour améliorer les performances de mise à jour des enregistrements dans la version répliquée de cette dimension?
Encore une fois, le passage à une table distribuée ne semble pas être la meilleure solution car il affectera des centaines de requêtes SQL et de rapports déjà écrits développés par d'autres personnes.