Eu tenho um banco de dados SQL Server 2008 R2 de 1,2 TB que está mais de 50% vazio, porque migrei muitas funcionalidades para o PostgreSql. O banco de dados ainda está em uso e ainda está crescendo um pouco, mas não acho que crescerá para usar todos os 1,2 TB nos próximos 3 a 5 anos.
No ritmo atual de crescimento, não vamos consumir 1,2 Tb em mais de 14 anos. Mais especificamente, continuamos migrando a funcionalidade para o PostgreSql sempre que precisamos fazer mudanças sérias. Em um ambiente ágil muito dinâmico, isso significa que frequentemente migramos dados para fora desse banco de dados do SQL Server. Portanto, é provável que esse banco de dados cresça ainda mais devagar no futuro: ele está sendo eliminado gradualmente.
Como tal, preferimos usar esse espaço vazio não utilizado para outros bancos de dados e tal - provavelmente não será necessário para o crescimento de tabelas/índices.
Lembro que a regra geral costumava ser "nunca reduza os bancos de dados". Aplica-se neste caso? Atualmente, o servidor está executando o 2008 R2 EE, mas planejamos atualizar para 2012 em breve. Acho que, como essa funcionalidade de redução existe, deve haver casos de uso válidos em que faça sentido reduzir. Caso contrário, por que ele existe?
Podemos nos dar ao luxo de algumas horas de inatividade durante um fim de semana.
Editar: o problema que estamos resolvendo é como eu disse acima: "preferimos usar esse espaço vazio não utilizado para outros bancos de dados". Além disso, preferimos uma solução que não exija investir muito tempo no aprendizado da tecnologia da qual estamos migrando.
Sim. Não toque no botão encolher - é uma regra geral e um conselho muito, muito bom de muitos renomados gurus do SQL Server - Paul Randal , Brent Ozar , Mike Walsh , Gail Shaw e muitos mais.
Você tem que ter 1000% de certeza sobre sua suposição de que está crescendo, mas não crescerá até esse tamanho nos 3 a 5 anos propostos (também é uma diferença de 2 anos :-)).
still somewhat growing
-->Você realmente precisa descobrir em que ritmo ela está crescendo. Você está rastreando o crescimento do banco de dados coletando o crescimento de dados durante todo o ciclo de negócios?Hoje em dia, os dados são o que mantém as empresas nos negócios e os bancos de dados devem crescer.
Pense nisso: o que você vai fazer com o espaço em disco que ganha com a redução do banco de dados?
Concentre-se em áreas mais importantes de otimização, como sugere @AaronBertrand .
Mesmo se você decidir encolher, eu sugiro que você
Editar
Após os comentários do OP ---
Então vá em frente ... já que você está ou estará movendo dados do SQL Server para o PostgreSql. Mas execute as etapas do post uma vez, como mencionei na minha resposta - depois de fazer a operação de redução. Além disso, use
DBCC SHRINKFIL
E, pois você tem mais controle sobre o que está encolhendo em oposição aDBCC SHRINKDATABASE
.A regra é nunca encolher. A regra é não encolher quando precisar crescer novamente.
Vá em frente e encolha para recuperar o espaço. Lide com a fragmentação resultante. Esteja ciente de que o encolhimento pode causar carga extrema no disco. Esses são praticamente os únicos problemas resultantes do encolhimento.
Ou reconstrua todos os índices em um novo grupo de arquivos e descarte/trunque o antigo. Isso pode ser muito mais rápido e desfragmentar/compactar todos os índices no processo. Observe que mover dados blob entre grupos de arquivos é muito mais difícil, então isso pode não funcionar para todos os índices/tabelas. Apenas uma ideia.
Uma coisa importante com a operação de redução ao encolher através do estúdio de gerenciamento é a opção ' Liberar espaço não utilizado ', o que isso faz é
''Faça com que qualquer espaço não utilizado nos arquivos seja liberado para o sistema operacional e reduza o arquivo até a última extensão alocada, reduzindo o tamanho do arquivo sem mover nenhum dado. Nenhuma tentativa é feita para realocar linhas para páginas não alocadas. ''
Você deve tentar esta opção, pois não há movimento de página, as chances de fragmentação são muito menores e esta opção pode ser usada se houver espaço livre no banco de dados.
É bom que você esteja ciente das desvantagens do encolhimento. Tenho certeza de que as recomendações de Paul, Brent e Gail são mais em termos de educar o usuário sobre as desvantagens do encolhimento do que impedi-las. Se você quiser recuperar espaço, terá que encolher em algum momento e o fato de encolher causa fragmentação, então você precisa lidar com isso. Não é como se ninguém usasse o psiquiatra de banco de dados que as pessoas usam, mas não recomendam em um fórum público porque não estão cientes do ambiente e do impacto que isso causará.
Eu diria que se você souber sobre o crescimento do banco de dados e souber que no próximo ano o espaço não será utilizado, reduza-o com cuidado , pode ser em pequenos pedaços, confira a opção que indiquei para ver se funciona