Atualmente, estou executando um script que executa um DBCC INDEXDEFRAG em todas as tabelas em um banco de dados SQL Server 2005, uma tabela por vez. Usar DBCC DBREINDEX em vez de INDEXDEFRAG não é uma opção, devido a restrições de espaço e requisitos de tempo de atividade.
Percebi que leva muito tempo para que certas tabelas sejam desfragmentadas. Por exemplo, se eu examinar a exibição de gerenciamento dinâmico "sys.dm_exec_requests", posso ver que o seguinte INDEXDEFRAG está atualmente agitado no índice clusterizado de uma tabela que possui um id_da_tabela de 829610394:
DBCC INDEXDEFRAG (0, 829610394, 1)
Sei que levará muito tempo até que o processo de desfragmentação seja concluído. Deixando de lado o fato de que o script atualmente em execução eventualmente desfragmentará todas as tabelas, há algum mal em executar manualmente outro DBCC INDEXDEFRAG no índice clusterizado de outra tabela enquanto o comando atual é executado? As duas tabelas serão realmente desfragmentadas ao mesmo tempo se eu fizer isso?
fonte
Observe que DBCC INDEXDEFRAG & DBREINDEX foram descontinuados e substituídos por ALTER INDEX:
Quanto à execução simultânea de dois, depende do layout do arquivo. Se todos estiverem no (s) mesmo (s) disco (s), você provavelmente desacelerará cada um, pois eles lutam entre si por E / S. Seria melhor apenas REORG ou REBUILD quando necessário. Confira o script de Michelle Ufford aqui para obter uma solução automatizada: http://sqlfool.com/2010/04/index-defrag-script-v4-0/
fonte