web-dev-qa-db-fra.com

Explication de la taille du lot dbcc

J'ai une très grande table avec 500 mil rangées et une colonne de texte que je vais tomber. Dans mon environnement de développement, j'ai laissé tomber la colonne et j'ai commencé le processus de récupération, mais je ne suis pas sûr de la taille du lot sur "DBCC CleanTable (MyDB," DBO.LARGETBL, 100000) ".

J'ai essayé de la définir à 5, en vous attendant à vérifier les 5 premières lignes et fin. "DBCC nettoyable (mydb, 'dbo.largetbl, 5)" et il a fallu 28 heures. J'ai donc restauré la base de données, réglées à 100 000 et il a fallu 4 heures

Question réelle: La taille du lot dit-elle à la DBCC nettoyable combien de rangées à faire à la fois et continuent de continuer à courir 100k à une heure jusqu'à ce qu'elle passe à travers toutes les lignes de 500 milles? Ou une fois que j'ai couru le 100 000, dois-je le faire fuir jusqu'à ce que je fasse toutes les 500 mil lignes?

Sur mon deuxième test, (en cours d'exécution de 100 000 une fois), j'ai pu réclamer 30 Go. Ensuite, j'ai dirigé un index de réorgan sur tous les index et récupéré et 60 Go supplémentaires ..

5
Tomasz

Selon la Microsoft Documentation La taille du lot indique à la carte de nettoyage DBCC le nombre de lignes à traiter par transaction. Ceci concerne le nombre de lignes que la carte nettoyée DBCC traite en interne car le processus de nettoyage DBCC est exécuté.

En prenant l'exemple de la documentation et de modifier pour ajouter un million de lignes, puis exécutant le script d'échantillon plusieurs fois avec des valeurs variables pour la taille du lot (voir ci-dessous), il apparaît que la spécification d'une petite taille de lot augmente la durée d'exécution que DBCC Nettyable fonctionne uniquement. sur le nombre de lignes spécifiées dans la taille du lot.

  • Aucune taille de lot spécifiée
  • Une taille du lot de 5
  • Une taille de lot de 100,00
3
armitage

En plus de la grande réponse par armitage Vous n'avez probablement pas besoin d'utiliser DBCC CleanTable dans votre scénario.

Vous déclarez

Ensuite, j'ai dirigé un index reorg sur tous les index et récupérés et 60 Go supplémentaires ..

Les meilleures pratiques dans les Microsoft Documents dit:

DBCC Nettoyable ne doit pas être exécuté comme une tâche de maintenance de routine. Au lieu de cela, utilisez la propretablie DBCC après avoir apporté des modifications importantes dans des colonnes de longueur variable dans une vue ou une vue indexée et vous devez récupérer immédiatement l'espace inutilisé. Alternativement, vous pouvez Reconstruire les index sur la table ou la vue; Cependant, ce faisant une opération plus intensive de ressources.

Il semble que l'heure et l'espace sont vos plus gros objectifs. Généralement la reconstruction d'un indice est plus rapide ( mais plus de ressources intensives) qu'un reorg.

Comme vous travaillez sur un Développement Server.

Il suffit de reconstruire vos index et vous obtiendrez les avantages de l'index reorg et de la propagation du DBCC en même temps, et probablement beaucoup plus rapidement.

Remarque Reconstruire et réorganiser ne sont pas la même chose:

8
James Jenkins