web-dev-qa-db-fra.com

Optimisation des performances de la BCP pour les données BLOB

Je suis le processus de planification de la migration en direct d'une base de données de 2 To aux tables partitionnées. Le système est globalement parlant d'un magasin de documents, la majorité de l'espace étant attribué à des lecteurs comprises entre 50kb et 500 ko, avec un faible pourcentage dans la plage de 500 Ko à 1 Mo. Une partie de la migration impliquera des données BCPER de l'ancienne à la nouvelle base de données.

Le BCP est l'approche préférée car la fracture actuelle/historique dans les données permet d'extraire les données plus anciennes des étapes (pendant des périodes plus calmes) à l'avance d'un interrupteur final, minimisant l'impact sur le système en direct. Le volume de données et la disponibilité du stockage exclut une reconstruction in situ à un schéma de partition .

Je suis suspect là-bas peut-être des gains de performance à avoir eu en expérimentant des kilobytes_per_batch plutôt que des rows_per_batch, en raison de la teneur en BLOB. Il est suggéré dans la Documentation BCP que SQL peut optimiser les opérations en fonction de cette valeur.

Ce que je ne trouve pas, ce n'est aucune orientation sur la nature de ces optimisations ou où commencer mes tests. Dans l'absence de suggestions, je vais essayer des courtes courtes à des limites de 4/8/16/22/64MB pour commencer.

Certains gains peuvent probablement être de changer la taille du paquet (paramètre bcp -a, plutôt que le réglage du niveau serveur), mais je suis enclin à cogner cela au maximum 65535 à moins que quiconque ait une approche plus formule.

13
Mark Storey-Smith

Ce n'est pas une réponse directe à votre question, mais il y a des articles que vous bénéficierez de les lire (au cas où vous ne les trouveriez pas d'abord :-)). Ils portent des lots de données à l'aide de la copie BCP/Bulk. Je les ai tous lus tous et je n'ai rien trouvé détaillé sur Kilobytes_per_batch, ils utilisent tous des rows_per_batch, mais je suis sûr que vous trouverez d'autres informations utiles.

et les références MSDN évidentes:

Dans mon expérience personnelle, j'ai réussi à effectuer une charge de données rapide en utilisant une charge parallèle et des tests avec plusieurs tailles de lots. Je suppose que seuls les tests personnels vous conviendront. J'espère que vous trouverez de bons conseils dans les références.

12
Marian