Esta é uma pergunta um pouco embaraçosa, e eu não posso acreditar que eu perdi isso por tantos anos.
Eu tenho um banco de dados de terceiros que tem 401 tabelas de heap. Recentemente, comecei a usar os scripts e a configuração de Brent Ozar sp_BlitzFirst
para executar a cada 15 minutos para coletar estatísticas de espera etc.
O que ele descobriu foi que toda vez que ele passava por um período de 24 horas estava me dizendo para corrigir os registros encaminhados . O que provavelmente chocará alguns leitores que eu executei uma consulta nos DMVs e obtive algumas tabelas com mais de 150.000 valores de registro encaminhados.
Eu entendo que corrigir isso é ter um índice clusterizado na tabela ou como uma solução temporária para executar o ALTER TABLE [tablename] REBUILD
.
O que não consegui encontrar, no entanto, é se isso deixa a tabela offline e se há outros problemas que eu deveria estar ciente antes de executar este comando.
Estou usando a Enterprise Edition de 2008 R2 e gostaria de saber se executá-la dessa maneira eliminará a necessidade de uma interrupção?
ALTER TABLE [tablename] REBUILD WITH (ONLINE = ON);
Alguém tem alguma experiência com isto?
Boas notícias: 150.000 registros encaminhados não é tão ruim assim, dependendo de que tipo de intervalo de tempo estamos falando. Os registros encaminhados são rastreados enquanto o servidor estiver ativo (com algumas pegadinhas em torno de um bug em compilações específicas de 2012/2014 ).
Mesmo quando funciona online, seus usuários podem perceber isso dependendo da taxa de transferência de E/S, tamanho da tabela, número de índices não clusterizados e suas cargas de trabalho.
Aqui está como eu abordo isso: