Copia di massa da una piccola tabella a una più grande in SQL Server 2005

bcp sqlbulkcopy sql-server sql-server-2005

Domanda

Sono un principiante in SQL Server e ho il seguente dilemma:

Ho due tavoli con la stessa struttura. Chiamalo runningTbl e finalTbl .

runningTbl contiene circa 600 000 a 1 milione di righe ogni 15 minuti.

Dopo aver eseguito una pulizia dei dati in runningTbl voglio spostare tutti i record in finalTbl . finalTbl ha attualmente circa 38 milioni di righe.

Il processo di cui sopra deve essere ripetuto ogni 15-20 minuti.

Il problema è che lo spostamento dei dati da runningTbl a finalTbl richiede più di 20 minuti a volte ..

Inizialmente, quando i tavoli erano piccoli, occorreva da 10 secondi a 2 minuti per copiare.

Ora ci vuole troppo tempo.

Qualcuno che può aiutare con questo? Query SQL da seguire ..

Grazie

Risposta popolare

Per cominciare: una delle cose che ho imparato nel corso degli anni è che MSSQL fa un ottimo lavoro nell'ottimizzare tutti i tipi di operazioni, ma fare così molto dipende dalle statistiche per tutte le tabelle coinvolte. Quindi, suggerirei di eseguire "UPDATE STATISTICS processed_logs" e "UPDATE STATISTICS unprocessed_logs" prima di eseguire gli inserimenti effettivi; anche su un grande tavolo queste cose non durano a lungo. Oltre a ciò, in base alla query sopra, molto dipende dagli indici della tabella di destinazione. Suppongo che la tabella di destinazione abbia il suo indice cluster (o PRIMARY KEY) su (almeno) UnixTime, altrimenti creerai una maggiore frammentazione dei dati quando spremerai sempre più dati tra i record già esistenti. Per ovviare a ciò, si può provare a deframmentare la tabella di destinazione una volta ogni tanto (può essere fatto online, ma richiede molto tempo), ma fare l'indice cluster (o PK) in modo che i dati vengano sempre aggiunti alla fine della tabella essere l'approccio migliore; bene, almeno secondo me.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow