RECONSTRUIR um HEAP causa tempo de inatividade?

8

Esta é uma pergunta um pouco embaraçosa, e não acredito que sinto falta disso há tantos anos.

Eu tenho um banco de dados de terceiros do fornecedor que possui 401 tabelas de heap. Recentemente, comecei a usar os scripts e a configuração de Brent Ozar sp_BlitzFirstpara executar a cada 15 minutos para coletar estatísticas de espera, etc.

O que descobriu foi que, toda vez que acontecia um período de 24 horas, ele me dizia para corrigir os registros encaminhados . O que provavelmente chocará alguns leitores é que eu executei uma consulta nas DMVs e recuperei algumas tabelas com mais de 150.000 valores de registros encaminhados.

Entendo que corrigir isso é ter um índice agrupado na tabela ou como uma solução temporária para executar ALTER TABLE [tablename] REBUILD.

O que não consegui encontrar, no entanto, é se isso coloca a tabela offline e se existem outros problemas dos quais devo estar ciente antes de executar este comando.

Estou usando a Enterprise Edition de 2008 R2 e gostaria de saber se executá-la dessa maneira removerá a necessidade de uma interrupção?

ALTER TABLE [tablename] REBUILD WITH (ONLINE = ON);  

Alguém tem alguma experiência com isto?

Philip
fonte

Respostas:

9

Boas notícias: 150.000 registros encaminhados não são tão ruins assim, dependendo do tipo de período em que estamos falando. Os registros encaminhados são rastreados enquanto o servidor estiver ativo (com algumas dicas em torno de um bug em compilações específicas de 2012/2014 ).

Mesmo quando funciona on-line, seus usuários podem notá-lo, dependendo da taxa de transferência de E / S, tamanho da tabela, número de índices não clusterizados e cargas de trabalho.

Aqui está como eu lido com isso:

  • Listar as tabelas com os avisos de registros encaminhados do menor para o maior tamanho de tabela (não o número de registros encaminhados)
  • Reconstrua essas tabelas em ordem, manualmente, algumas de cada vez. Não automatize isso - você deseja ter uma ideia de como o seu sistema responde à reconstrução de pequenas tabelas. Você aprenderá rapidamente se o seu servidor puder acompanhar.
  • Fique de olho no uso do log de transações. Se o seu arquivo de log tiver 10 GB e você estiver tentando reconstruir um heap de 50 GB, poderá encontrar problemas. Você pode atenuar esses problemas aumentando o logoff antecipadamente durante as janelas de manutenção e fazendo backups freqüentes de log enquanto faz isso - mas vou ser sincero, com 150 mil registros encaminhados ao longo de alguns dias. não se preocupe em passar por tanto trabalho.
  • No futuro, trabalhe com o fornecedor para colocar uma chave em cluster nessas tabelas. Sim, há momentos em que os heaps são apropriados, mas se você estiver enfrentando o problema de registro encaminhado, provavelmente não estará em uma dessas situações favoráveis ​​ao heap.
Brent Ozar
fonte