Estou tentando executar um arquivo de redução dbcc em pedaços de 1 GB em um banco de dados em que 95% dos dados foram arquivados e excluídos. Estou com um arquivo de 235 GB onde 9 GB são dados / índices. Eu quero reduzir isso para 50 GB. Sei que diminuir os arquivos do banco de dados é ruim, causa fragmentação etc. Como parte da limpeza / redução de dados, também temos um script idnex de reconstrução.
Quando executo meu script dbcc shrinkfile no banco de dados em minha própria estação de trabalho (quad core, 12 GB de RAM, 2 x unidades SATA), o encolhimento leva de 8 a 10 minutos.
Ao executar o código idêntico em uma cópia idêntica da limpeza de dados pós-banco de dados, em nosso ambiente de teste (mais de 80 núcleos, 128 GB de RAM, SSD SAN), leva 70 minutos. Observe que há pouca atividade neste servidor no momento da execução do arquivo reduzido. Foi executado 4 vezes com resultados idênticos.
Em seguida, adotei uma abordagem diferente: mover os 9 GB restantes para um grupo de arquivos e arquivo físico diferentes. Executar o arquivo shrink do dbcc no arquivo vazio de 230 GB para reduzi-lo para 50 GB, na minha própria estação de trabalho leva <1 minuto.
Com essa mesma abordagem, no ambiente de teste, são necessários mais de 70 minutos.
Tirei uma foto instantânea das estatísticas de espera antes e depois, de acordo com o script de Brent Ozar, durante os 70 minutos de execução no ambiente de teste, e os tipos de espera retornaram, não mostrando nada a que se preocupar. As 3 principais linhas abaixo:
Tempo da segunda amostra Duração da amostra em segundos wait_type Tempo de espera (segundos) Número de esperas méd. Ms por espera 2013-05-28 11: 24: 22.893 3600 WRITELOG 160,8 143066 1,1 2013-05-28 11: 24: 22.893 3600 CXPACKET 20.9 13915 1,5 2013-05-28 11: 24: 22.893 3600 PAGELATCH_EX 11.1 443038 0.0
O log de eventos do Windows não mostra nada incomum. Estou indo coçar neste momento, por que está demorando tanto tempo no hardware ninja, em comparação com minha estação de trabalho autônoma.
sys.dm_os_latch_stats
@@version
em ambos