Comportamento estranho DBCC Shrinkfile

9

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.

Ptreston
fonte
Verifique o banco de dados e tente.
Kin Shah
limpe as estatísticas da trava antes do psiquiatra e capture-as após o psiquiatra, nas duas máquinas. sys.dm_os_latch_stats
Remus Rusanu
Além disso, @@versionem ambos
Remus Rusanu
Os dados que foram excluídos eram dados de blob ou dados normais? A cópia na sua estação de trabalho foi excluída lá ou você fez o backup do sistema de controle de qualidade após a exclusão e a restaurou na sua máquina?
Mrdenny

Respostas:

4

Shrinkfile em um arquivo de dados é uma operação de thread único, reutilizando um pequeno buffer de memória.

Portanto, o hardware Ninja não tem uma vantagem com a memória extra e os 80 núcleos.

No entanto, seu PC local tem o benefício da latência de E / S local (disco local, ou seja, não é necessário fazer várias viagens à SAN).

John Alan
fonte