Ottimizzazione delle prestazioni BCP per i dati BLOB


13

Sono il processo di pianificazione della migrazione live di un database da 2 TB a tabelle partizionate. Il sistema sta parlando in generale di un archivio di documenti, la maggior parte dello spazio è allocata a LOB tra 50kb e 500kb, con una piccola percentuale nell'intervallo da 500kb a 1MB. Parte della migrazione coinvolgerà i dati BCP dal vecchio al nuovo database.

BCP è l'approccio preferito poiché la divisione attuale / storica nei dati consente di estrarre i dati più vecchi in più fasi (durante periodi più tranquilli) prima di un passaggio finale, riducendo al minimo l'impatto sul sistema live. Il volume di dati e la disponibilità di archiviazione preclude una ricostruzione in situ in uno schema di partizione .

Ho il sospetto che forse ci saranno alcuni miglioramenti delle prestazioni sperimentando KILOBYTES_PER_BATCH anziché ROWS_PER_BATCH, a causa del contenuto BLOB. Nella documentazione BCP viene suggerito che SQL può ottimizzare le operazioni in base a questo valore.

Quello che non riesco a trovare è una guida sulla natura di queste ottimizzazioni o su dove iniziare i miei test. In assenza di suggerimenti, proverò per iniziare brevi tiri ai confini 4/8/16/32 / 64mb.

Probabilmente alcuni vantaggi derivano dalla modifica della dimensione del pacchetto (parametro BCP -a, piuttosto che dall'impostazione a livello di server), ma sono propenso a superare questo valore al massimo 65535 a meno che qualcuno non abbia un approccio più formulaico.

Risposte:


12

Questa non è una risposta diretta alla tua domanda, ma ci sono alcuni articoli di cui potresti trarre vantaggio dalla loro lettura (nel caso non li avessi trovati prima :-)). Si tratta di caricare molti dati usando bcp / copia bulk. Li ho letti tutti e non ho trovato nulla di dettagliato su KILOBYTES_PER_BATCH, stanno usando tutti ROWS_PER_BATCH, ma sono sicuro che troverai altre informazioni utili.

e gli ovvi riferimenti MSDN:

Nella mia esperienza personale, sono riuscito a effettuare un caricamento rapido dei dati utilizzando il caricamento parallelo e test con diverse dimensioni di batch. Immagino che solo i test personali ti vadano bene. Spero che troverai dei buoni consigli nei riferimenti.


Grazie Marian, ho aggiunto alcuni segnalibri da quella lista esaustiva. Come attività una tantum, molti dei passaggi incrementali / di perfezionamento non sono altrettanto utili, ma ci sono molti suggerimenti che posso usare.
Mark Storey-Smith,

Sì, ho la tua sensazione, anche per me è stato un compito una tantum, e ho trovato alcune cose utili nella lista. È un grande compito però :-). Puoi anche fare una piccola applicazione .NET (se hai familiarità con .NET), come in un altro articolo di Linchi Shea: Impatto sulle prestazioni: lo script di inserimento più ottimale non può battere BulkCopy . Potresti trovare lo stesso di lui :-).
Marian,

Poiché non sembra esserci alcuna guida specifica BLOB per BCP in circolazione, sto contrassegnando la tua risposta molto completa come accettata. Grazie ancora.
Mark Storey-Smith,

Mi dispiace non poterti aiutare di più, ma spero che tu abbia trovato qualcosa di utile.
Marian,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.