Ich führe derzeit ein Skript aus, das eine DBCC INDEXDEFRAG für jede Tabelle in einer SQL Server 2005-Datenbank nacheinander ausführt. Die Verwendung von DBCC DBREINDEX anstelle von INDEXDEFRAG ist aus Platzgründen und aufgrund von Verfügbarkeitsanforderungen keine Option.
Ich habe festgestellt, dass es lange dauert, bis bestimmte Tabellen defragmentiert sind. Wenn ich beispielsweise die dynamische Verwaltungsansicht "sys.dm_exec_requests" untersuche, kann ich feststellen, dass der folgende INDEXDEFRAG derzeit den Clustered-Index einer Tabelle mit einer table_id von 829610394 abläuft:
DBCC INDEXDEFRAG (0, 829610394, 1)
Ich weiß, dass es lange dauern wird, bis der Defragmentierungsprozess abgeschlossen ist. Abgesehen von der Tatsache, dass das aktuell ausgeführte Skript möglicherweise alle Tabellen defragmentiert, kann es mir schaden, wenn ich manuell einen anderen DBCC INDEXDEFRAG für den Clustered-Index einer anderen Tabelle ausführe, während der aktuelle Befehl ausgeführt wird? Werden in diesem Fall beide Tabellen gleichzeitig defragmentiert?
quelle
Beachten Sie, dass DBCC INDEXDEFRAG & DBREINDEX veraltet sind und durch ALTER INDEX ersetzt werden:
Die gleichzeitige Ausführung von zwei Dateien hängt von Ihrem Dateilayout ab. Wenn sie sich alle auf derselben (n) Festplatte (n) befinden, würden Sie sie wahrscheinlich verlangsamen, da sie für E / A gegeneinander kämpfen würden. Am besten REORG oder REBUILD nur bei Bedarf. Eine automatisierte Lösung finden Sie hier im Skript von Michelle Ufford: http://sqlfool.com/2010/04/index-defrag-script-v4-0/
quelle