Um banco de dados de tempo encolhem a solução Catch-22?
-
29-09-2020 - |
Pergunta
Eu estou desenvolvendo um plano para o SQL Server 2012 EE para downsize e digite adequadamente (nchar a tipos de caracteres) alguns campos desnecessariamente Unicode NVarchar (max) e gostaria de otimizar o tamanho do banco de dados como parte do tempo de inatividade, fazendo uma vez psiquiatra. Experimentos mostraram uma economia de espaço alocada de 50% que é 11g de dados.
Depois de ler e experimentar, é evidente que o encolhimento de um banco de dados causa fragmentação de índice e índices de reconstrução faz com que o banco de dados se expanda. Uma verdadeira situação de captura-22. Eu não quero deixar 50% de espaço livre no banco de dados que é 11g de armazenamento em disco neste caso.
A seguinte seria uma abordagem decente por um período único que permite acabar com os índices não fragged e estatísticas de índice atualizado?
o backup w / verificação e backups duplicados.
o soltar todos os índices.
o Reconstruir todas as tabelas de gordura também via copiar em novas tabelas e, em seguida, solte e renomeie as tabelas. Isso está funcionando bem.
o encolher o banco de dados deixando uma quantidade razoável de espaço livre.
o Recriar todos os índices que foram descartados.
v Valide o banco de dados e verifique a fragmentação.
Apontar a quaisquer advertências, sugestões, gotchas ou alternativas para considerar muito apreciada.
thx, Dave
Solução
Simple Recovery Model não "desliga o log" - tão geralmente, a menos que você queira quebrar qualquer uma dessas atividades em pedaços muito pequenos, apenas pré-dimensione o log grande o suficiente para lidar com as maiores reconstruções, e não se incomode em mexer com o modelo de recuperação.
Além disso, e de novo em geral, a menos que seus dados nunca sejam liberar o espaço temporariamente é de pouco benefício (dado que não sei o que você quer dizer com "razoável"). Você precisará deixar o espaço livre na unidade, caso o banco de dados crescer novamente, certo? Por que encolher apenas para crescer novamente? Você vai fornecer aluguel de curto prazo nesse espaço até que o banco de dados cresce? Você está apenas tentando evitar alertas de espaço livre%?
Sugestão: Dê a esses posts uma boa leitura ...
- por que o Log de transações continua crescendo ou ficam sem espaço?
- SQL Server - melhores práticas para os arquivos de banco de dados em crescimento
- Melhores práticas e experiências do ShrinkFile
- eu Precisa encolher meu banco de dados - acabei de libertar muito espaço
- reduz o tamanho de um banco de dados
- Quando é ok para encolher um banco de dados?
- Banco de dados ficando sem espaço