Verursacht der Wiederaufbau eines HEAP Ausfallzeiten?


8

Dies ist eine etwas peinliche Frage, und ich kann nicht glauben, dass ich das seit so vielen Jahren verpasst habe.

Ich habe eine Drittanbieter-Datenbank mit 401 Heap-Tabellen. Ich habe kürzlich angefangen, die Skripte und das Setup von Brent Ozar so sp_BlitzFirstzu verwenden, dass sie alle 15 Minuten ausgeführt werden, um Wartestatistiken usw. zu sammeln.

Was es aufdeckte, war jedes Mal, wenn es über einen Zeitraum von 24 Stunden lief, sagte es mir, ich solle Forwarded Records reparieren . Was wahrscheinlich einige Leser schockieren wird, dass ich eine Abfrage über die DMVs ausgeführt und einige Tabellen mit über 150.000 weitergeleiteten Datensatzwerten zurückbekommen habe.

Ich verstehe, um dies zu beheben, muss ein Clustered-Index in der Tabelle vorhanden sein oder als vorübergehende Problemumgehung ausgeführt werden ALTER TABLE [tablename] REBUILD.

Was ich jedoch nicht finden konnte, ist, ob dadurch die Tabelle offline geschaltet wird und ob es andere Probleme gibt, die ich beachten sollte, bevor ich diesen Befehl ausführe.

Ich verwende die Enterprise Edition von 2008 R2 und frage mich, ob die Ausführung auf diese Weise die Notwendigkeit eines Ausfalls beseitigt.

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

Hat jemand irgendwelche Erfahrungen damit?

Antworten:


9

Gute Nachrichten: 150.000 weitergeleitete Datensätze sind nicht wirklich so schlecht, je nachdem, um welche Zeitspanne es sich handelt. Weitergeleitete Datensätze werden nachverfolgt, solange der Server aktiv ist (mit einigen Fallstricken um einen Fehler in bestimmten Builds 2012/2014 ).

Selbst wenn es online funktioniert, können Ihre Benutzer dies abhängig von Ihrem E / A-Durchsatz, der Größe der Tabelle, der Anzahl der nicht gruppierten Indizes und Ihren Workloads feststellen.

So gehe ich vor:

  • Listen Sie die Tabellen mit den Warnungen für weitergeleitete Datensätze von der kleinsten bis zur größten Tabellengröße auf (nicht Anzahl der weitergeleiteten Datensätze).
  • Erstellen Sie diese Tabellen nacheinander von Hand neu. Automatisieren Sie dies nicht - Sie möchten ein Gefühl dafür bekommen, wie Ihr System auf die Neuerstellung kleiner Tabellen reagiert. Sie werden ziemlich schnell lernen, ob Ihr Server mithalten kann.
  • Behalten Sie die Verwendung Ihres Transaktionsprotokolls im Auge. Wenn Ihre Protokolldatei 10 GB groß ist und Sie versuchen, einen 50-GB-Heap neu zu erstellen, können Probleme auftreten. Sie können diese Probleme abmildern, indem Sie das Protokoll während der Wartungsfenster vorzeitig erweitern und dabei häufige Protokollsicherungen durchführen. Aber ich bin ehrlich, bei 150.000 weitergeleiteten Datensätzen über einen Zeitraum von einigen Tagen würde ich das nicht tun Ich mache mir nicht die Mühe, so viel Arbeit zu erledigen.
  • Arbeiten Sie in Zukunft mit dem Anbieter zusammen, um einen Cluster-Schlüssel für diese Tabellen zu erstellen. Ja, es gibt Zeiten, in denen Heaps angemessen sind, aber wenn Sie auf das Problem mit weitergeleiteten Datensätzen stoßen, befinden Sie sich wahrscheinlich nicht in einer dieser Heap-freundlichen Situationen.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.