Temos alguns bancos de dados com fragmentação de índice que é> 95%. O melhor que posso dizer é que os índices nunca foram reconstruídos e muito menos reorganizados. Em anos.
(Para ser justo, essas tabelas parecem ter estatísticas de atualização automática ativadas. Também para ser justo, ele é diligente em relação aos backups: logs diários completos e trx a cada hora.)
Quando perguntei, o DBA disse que estava relutante em reconstruir ou reorganizar os índices. Quando perguntei por que, ele realmente não conseguiu articular. Eventualmente, ele disse que estava preocupado com a possível perda de dados. Por exemplo, um dos bancos de dados é usado pelo nosso aplicativo de contabilidade da Great Plains Dynamics, e ele parecia muito preocupado com isso.
Eu não sou um DBA, mas pelo que li, a ansiedade dele parece ... difícil de entender.
Não sei o que fazer a seguir. Sugestões como devo proceder?
fonte
Respostas:
A reconstrução de um índice de banco de dados não deve causar perda de dados. No entanto, provavelmente causará uma degradação substancial do desempenho, pois os índices que estão sendo reconstruídos normalmente não estarão disponíveis para uso até que a reconstrução seja concluída. Por esse motivo, isso deve ser feito fora do horário comercial, quando os sistemas afetados estão ociosos.
A paranóia é uma coisa boa em um DBA - se eles estiverem preocupados com a perda de dados, solicitarei que eles façam um teste adequado dos backups (restaure-os em um sistema separado e verifique se todos os dados estão lá) e se estão Se ainda estiver preocupado, executar um backup completo antes de reconstruir os índices seria uma precaução razoável a ser tomada.
fonte
WITH (ONLINE=ON)
contanto que o índice não contém colunas BLOB.REINDEX
como "manutenção preventiva" em tabelas onde o conteúdo do índice muda bastante é bastante comum na minha experiência (se o índice é mais estático que é menos de uma coisa)Não há risco de perda de dados devido à reconstrução ou desfragmentação de índices.
fonte
A reorganização dos índices levará menos tempo e menos esforço do servidor SQL, portanto, eles podem ser feitos em um tipo de instância durante a semana. Se o que você está dizendo é verdade, mesmo a reorganização dos índices que nunca foram, também pode causar um impacto maior no servidor. A reconstrução dos índices exigirá uma quantidade substancial de esforço do servidor SQL, pois eles são descartados e reconstruídos. Fazer uma reconstrução em uma semana não vale o risco de o servidor estar ocupado com índices e não atender às pessoas que o utilizam.
Concordo com o voretaq7, se ele está preocupado em trabalhar com índices, experimente primeiro nos servidores de desenvolvimento ou teste para ver como eles reagem.
fonte
DROP INDEX
e reCREATE INDEX
-não tenho certeza sobre o SQL Server, mas sei que o PostgreSQL às vezes faz melhor explodir um índice e começar do zero, em vez de tentar reconstruí-REINDEX
lo ( ).