Utilizziamo un dispositivo PDW di SQL Server per il nostro data warehouse. Una delle tabelle nel nostro magazzino è una tabella replicata con circa 20 milioni di righe. Come parte del nostro processo ETL, dobbiamo far scadere vecchi record da questa dimensione; tuttavia, stiamo vedendo che l'aggiornamento di una manciata di record (<100) richiede più di 1 ora per il completamento. Questo è ciò che vorrei migliorare se posso.
Naturalmente, un'opzione a cui ho pensato è stata quella di cambiare questa dimensione da replicata a distribuita. I miei test mostrano che risolverebbe il problema con il processo ETL che impiegherebbe molto tempo (da 1,5 ore a 30 secondi), ma tutti i join rispetto alla versione distribuita di questa dimensione sarebbero interessati poiché i join non sono quasi mai basati sulla stessa distribuzione colonna. Quando guardo il piano di esecuzione di alcune di queste query di solito vedo un'operazione ShuffleMove o BroadcastMove .
Quindi la mia domanda al guru del PDW è qui:
C'è qualcos'altro che può essere fatto per migliorare le prestazioni di aggiornamento dei record nella versione replicata di questa dimensione?
Ancora una volta, il passaggio a una tabella distribuita non sembra essere la soluzione migliore poiché influirà su centinaia di query e report SQL già scritti sviluppati da altre persone.