você tem um bom motivo para se preocupar, pois o banco de dados encolhe no SQL Server frequentemente "suga". Paul Randal, chefe do Mecanismo de Armazenamento no SQL 2005, declarou que o ShrinkDB está muito mal escrito. Ele encontrará espaço vazio, pegando os dados no final e colocando-os no início, e continue fazendo isso até ter espaço livre no 'final' dos arquivos do banco de dados. Nesse ponto, ele pode liberar o espaço do SQL Server e devolvê-lo ao sistema operacional. Você está efetivamente revertendo seus arquivos de banco de dados e, portanto, verá uma fragmentação maciça normalmente. Você pode ler sobre suas opiniões nesta postagem do blog ou neste vídeo da MCM Internals
Como em tudo, você realmente deve testá-los primeiro em seu ambiente. Uma maneira melhor de fazer isso é mover dados para um grupo de arquivos diferente. Você pode reconstruir o índice online com o índice clusterizado e reindexar no novo grupo de arquivos. Então você pode largar o antigo e liberar o espaço e quase não tem fragmentação. Observe que isso exigirá cerca de 120% de espaço extra enquanto estiver sendo trabalhado. O problema é que você precisa de espaço livre adicional, o que parece não ter. Este é um recurso da empresa.
Se o espaço livre for muito alto, talvez você precise morder a bala e encolher lentamente o DB um pequeno pedaço de cada vez para evitar processos demorados. Observe que seus dados serão fortemente fragmentados e você precisará reindexar tudo novamente. Observe que depois de reindexar tudo, você aumentará um pouco o espaço usado e voltará a ter espaço livre adicional. Veja o conselho de Brent aqui .
Na medida em que o espaço livre é bom para você, é uma questão de quanto você pode pagar por atividades de fragmentação e crescimento de arquivos. Com o IFI ativado, o crescimento do arquivo é quase instantâneo, mas você ainda fica fragmentado. Uma boa regra geral é pré-alocar o espaço que achar necessário, ou monitorar o crescimento e ajustar periodicamente os trechos, se necessário. Isso mantém a fragmentação física baixa.
Além disso, o crescimento do arquivo de log é muito mais importante. Arquivos de log adicionais podem causar fragmentação do VLF. Isso torna as restaurações muito mais lentas e pode afetar o ponto de verificação / trunca. Aqui estão alguns riscos de desempenho que você corre com um log fragmentado. Faça um DBCC LOGINFO();
em cada banco de dados. Tente manter o número em torno de 50 por Kim Tripp, mas se você vir centenas, terá problemas de fragmentação, o que significa que seus arquivos de log tiveram que crescer para dar suporte às operações. Uma boa maneira de ver qual deve ser o seu arquivo de log para Paul Randal é deixá-lo crescer por uma semana e reindexar. Esse pode ser um bom ponto, talvez você possa colocar um pouco mais de espaço livre por lá. Verifique se seus logs não estão fragmentados com DBCC LOGINFO (); de novo e se estiverem, significa que cresceram muito. Reduza e expanda novamente o arquivo de log usandoeste método .