RE-BUILDing di un HEAP provoca tempi di inattività?


8

Questa è una domanda un po 'imbarazzante e non riesco a credere di essermi perso per così tanti anni.

Ho un database di terze parti del fornitore che ha 401 tabelle heap. Di recente ho iniziato a utilizzare gli script e l'installazione sp_BlitzFirstdi Brent Ozar per eseguire ogni 15 minuti per raccogliere statistiche di attesa, ecc.

Ciò che è stato scoperto è stato ogni volta che ha funzionato per un periodo di 24 ore, mi stava dicendo di riparare i Forwarded Records . Ciò che probabilmente scioccherà alcuni lettori sul fatto che ho eseguito una query attraverso i DMV e ho recuperato alcune tabelle con oltre 150.000 valori di record inoltrati.

Capisco che risolvere questo problema è disporre di un indice cluster sulla tabella o come soluzione temporanea da eseguire ALTER TABLE [tablename] REBUILD.

Ciò che non sono stato in grado di trovare, tuttavia, è se questo porta la tabella offline e se ci sono altri problemi di cui dovrei essere a conoscenza prima di eseguire questo comando.

Sto usando l'Enterprise Edition di 2008 R2 e mi chiedo se eseguirlo in questo modo rimuoverà la necessità di un'interruzione?

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

Qualcuno ha qualche esperienza con questo?

Risposte:


9

Buone notizie: 150.000 record trasmessi non sono poi così male, a seconda del tipo di intervallo di tempo di cui stiamo parlando. I record inoltrati vengono tracciati fino a quando il server è attivo (con alcuni trucchi attorno a un bug in build 2012/2014 specifiche ).

Anche quando funziona online, gli utenti possono notarlo in base alla velocità effettiva IO, alla dimensione della tabella, al numero di indici non cluster e ai carichi di lavoro.

Ecco come affrontarlo:

  • Elencare le tabelle con gli avvisi dei record inoltrati dalla dimensione della tabella più piccola a quella più grande (non il numero di record inoltrati)
  • Ricostruisci quelle tabelle in ordine, a mano, alcune alla volta. Non automatizzare questo: vuoi avere un'idea di come il tuo sistema risponde alla ricostruzione di piccoli tavoli. Imparerai abbastanza rapidamente se il tuo server può tenere il passo.
  • Tieni d'occhio il tuo registro delle transazioni. Se il file di registro è 10 GB e stai cercando di ricostruire un heap da 50 GB, potresti riscontrare problemi. Puoi mitigare questi problemi aumentando il logout in anticipo durante le finestre di manutenzione e facendo frequenti backup del log mentre lo stai facendo - ma sarò onesto, con 150k record inoltrati nell'arco di pochi giorni, non lo farei non preoccuparti di affrontare questo lavoro così tanto.
  • Andando avanti, collaborare con il fornitore per inserire una chiave cluster su tali tabelle. Sì, ci sono momenti in cui gli heap sono appropriati, ma se stai riscontrando un problema con i record inoltrati, probabilmente non ti trovi in ​​una di quelle situazioni compatibili con l'heap.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.