Actualmente estoy ejecutando un script que realiza un DBCC INDEXDEFRAG en cada tabla en una base de datos SQL Server 2005, una tabla a la vez. Usar DBCC DBREINDEX en lugar de INDEXDEFRAG no es una opción, debido a limitaciones de espacio y requisitos de tiempo de actividad.
Me he dado cuenta de que lleva mucho tiempo desfragmentar ciertas tablas. Por ejemplo, si examino la vista de administración dinámica "sys.dm_exec_requests", puedo ver que el siguiente INDEXDEFRAG se está produciendo actualmente en el índice agrupado de una tabla que tiene un id_tabla de 829610394:
DBCC INDEXDEFRAG (0, 829610394, 1)
Sé que pasará mucho tiempo antes de que se complete el proceso de desfragmentación. Dejando a un lado el hecho de que el script que se está ejecutando actualmente eventualmente desfragmentará todas las tablas, ¿hay algún daño en que yo ejecute manualmente otro DBCC INDEXDEFRAG en el índice agrupado de otra tabla mientras se ejecuta el comando actual? ¿Se desfragmentarán ambas tablas al mismo tiempo si hago esto?
fuente
Tenga en cuenta que DBCC INDEXDEFRAG & DBREINDEX están en desuso y se reemplazan por ALTER INDEX:
En cuanto a ejecutar dos simultáneamente, depende de su diseño de archivo. Si todos están en el mismo disco (s), es probable que reduzca la velocidad de cada uno ya que lucharían entre sí por las E / S. Sería mejor REORG o REBUILD solo cuando sea necesario. Consulte el script de Michelle Ufford aquí para obtener una solución automatizada: http://sqlfool.com/2010/04/index-defrag-script-v4-0/
fuente