24x7 vs Nachtzeitfenster

19

Wo finde ich Ressourcen für einen besseren Umstieg auf einen 24-Stunden-Betrieb? Wie schaffen es die großen Unternehmen mit großen Datenbanken? Unsere nächtlichen Jobs wie

  1. Alte Daten löschen
  2. neu indizieren
  3. Statistiken aktualisieren

Alle scheinen entscheidende Auswirkungen auf unser System zu haben (z. B. Online-Benutzer und Echtzeit-Datenfeeds). Ich habe bei Amazon nach Büchern gesucht, die mit diesem Thema zu tun haben, und bis jetzt noch nichts gefunden.

NealWalters
quelle
Möchten Sie Datenbanken von einem Server auf einen anderen migrieren oder die Auswirkungen Ihrer nächtlichen Jobs besser verwalten?
Mike Fal
Wie kann man die Auswirkungen nächtlicher Jobs steuern? Dh wie man das nächtliche "Batch-Fenster" verkleinert oder eliminiert.
NealWalters
2
@ NealWalters Auf welcher Edition von SQL Server befinden Sie sich? (Online-Index-Neuerstellungen und Tabellenpartitionierungen zum Austauschen alter Daten sind in der Enterprise Edition verfügbar.)
Martin Smith,
1
Welche Version von SQL Server verwenden Sie? Enterprise / Standard? Enterprise verfügt über bestimmte Funktionen, mit denen Sie einige Vorgänge als ONLINE ausführen können, ohne dass sich dies auf die Benutzer auswirkt.
Kin Shah
1
@NealWalters Check out Wenn Sie DBCC CHECKDB auf mehrere Tage verteilen, erhalten Sie weitere Informationen. Es ist zwar mehr für CHECKDB, wird Ihnen aber dabei helfen, sich ein Bild zu machen. Teilen Sie uns mit, welche Edition Sie verwenden, damit die Leute hier Ihnen besser helfen können.
Kin Shah

Antworten:

27

Das Verwalten von 24x7-Datenbanken ist ein ziemlich umfangreiches Thema mit vielen zu berücksichtigenden Optionen. Dieses breite Thema hat viele Punkte zu berücksichtigen, aber wir können versuchen, auf einige der Höhepunkte zurückzugreifen.

Zunächst möchten Sie feststellen, dass viele Vorgänge rund um die Uhr ausgeführt werden und in der Regel nur geringe Aktivitäten stattfinden. Sie können diese Zeiten für die Ausführung Ihrer Wartung nutzen, um die Störungen in der Datenbank zu verringern. Zweitens müssen Sie einige Zeit für vollständige Ausfälle reservieren (z. B. für Service Packs oder Datenbankmigrationen), sodass Sie mit Ihrem Management vollständige Wartungsfenster aushandeln müssen. Für bestimmte Elemente müssen Sie die einzelnen Elemente berücksichtigen und planen sowie Ihre Werkzeuge entsprechend einsetzen. Wichtig ist, dass Sie jeden dieser Punkte PLANEN müssen. Alle Beispiele, die ich vorlege, lauten "Ihre Meilen können variieren".

Backups

Sicherungen haben in der Regel keine großen Auswirkungen auf die Arbeitslast, müssen jedoch berücksichtigt werden, da sie viel E / A verbrauchen können. Sie sollten diese entsprechend planen und den Zeitaufwand überwachen. Die größte Hürde dabei ist, dass Sie bei einem Betrieb rund um die Uhr wahrscheinlich nicht jede Nacht vollständige nächtliche Backups durchführen können. In Kombination mit Ihren Protokollsicherungen sollten Sie planen, wann Sie vollständige Daten abrufen können, wann Sie unterschiedliche Daten abrufen und Aufbewahrungsfristen für beide Daten festlegen.

Beispielsweise führe ich am Sonntagabend (niedrigste Aktivität) vollständige Sicherungen aller meiner Datenbanken durch, an allen anderen Abenden (Montag bis Samstag) Differentiale. Ich behalte die letzten zwei Wochen voller Daten und Unterschiede auf der Festplatte, protokolliere die letzten zwei Tage. Dies gibt mir genügend Flexibilität für die Wiederherstellung, aber ich muss möglicherweise bei Bedarf Sicherungen von Band wiederherstellen.

Index- / Statistikpflege

Dies ist die häufigste Art der aktiven Wartung, mit der Sie sich befassen müssen. Sie können es nicht vermeiden, aber Sie können die Auswirkungen abschwächen. Die anfängliche Faustregel lautet, dass Sie nur Objekte warten sollten, die sie benötigen. Nach den allgemeinen Richtlinien sollten nur Indizes neu erstellt werden, die zu mehr als 30% fragmentiert und größer als 1000 Seiten sind . Wenn Sie über eine automatische Aktualisierung von Statistiken verfügen , übernimmt dies den größten Teil Ihrer Statistikwartung. Ein nächtlicher Job, um die Dinge synchron zu halten, ist jedoch keine schlechte Idee.

Wenn Sie über Enterprise Edition verfügen, haben Sie auch Zugriff auf einige andere Optionen zum Verwalten der Wartung. Das Wichtigste sind Online-Index-Neuerstellungen , mit denen Sie Indizes neu erstellen können, während sie noch verwendet werden (im Wesentlichen wird der Index nebeneinander erstellt und dann eingetauscht). Sie können die Partitionierung auch für "große" Tabellen nutzen, um die erforderliche Neuerstellungszeit zu reduzieren.

Wenn Sie für diese Art der Wartung keine benutzerdefinierten Skripte verwenden, die diese bewährten Methoden unterstützen, empfiehlt es sich, die Wartungsskripte von Ola Hallengren zu verwenden . Diese sind relativ einfach einzurichten und zu konfigurieren und enthalten viele dieser Richtlinien.

DBCC-Konsistenzprüfungen

Abhängig von Ihrer Gesamtauslastung können DBCC-Überprüfungen zu Betriebsstörungen führen. Es gibt zwei Möglichkeiten, um die Auswirkungen Ihres DBCC auf Ihre Datenbanken zu minimieren:

  • PHYSICAL_ONLY- Wenn Sie diese Option ausführen, werden Ihre Datenbanken auf physischer Seitenebene überprüft und die invasivere vollständige Überprüfung wird vermieden. Dies deckt die Ermittlung der wahrscheinlichsten Arten von Korruption ab.
  • Überprüfen einer wiederhergestellten Kopie - Wenn Sie über den erforderlichen Speicherplatz verfügen, können Sie die Datenbank in einer anderen Instanz wiederherstellen und eine DBCC-Überprüfung für die wiederhergestellte Kopie ausführen. Dies wird die gleiche Geschichte über Ihre Live-Datenbank erzählen, aber Sie werden die Aktivität offensichtlich nicht stören. In einigen anderen Alternativen wird DBCC für eine Protokollkopie oder eine gespiegelte Datenbank ausgeführt.

In diesem Blog-Beitrag erfahren Sie mehr über Ihre Optionen.

Batch-Jobs / ETL

Es kommt wirklich darauf an, wie Sie Ihre Prozesse gestalten. Ihre ETL kann immer mit aktiven OLTP-Tabellen interferieren (genau wie jede andere Anwendung). Beachten Sie daher einige Schlüssel:

  • Planen Sie solche Arbeiten im Umfeld Ihrer anderen Wartung und in Zeiten geringer Aktivität.
  • Passen Sie die Größe des Werks an, damit es für beide Aufgaben gleichermaßen geeignet ist und der Stapel nicht so groß ist, dass Ihr Tisch stundenlang gesperrt wird. Beispiele für die Enden des Spektrums: Row-by-Agonizing Row (RBAR) im Vergleich zu einer einzelnen Million gelöschter Zeilen.
  • Verwenden Sie Stufentabellen und schalten Sie Ihre Datenverarbeitung gegebenenfalls offline. Fassen Sie das Live-Material nur an, wenn es unbedingt erforderlich ist.

Fazit

Auch hier gibt es viel zu tun. Dies ist kein umfassender Leitfaden, sondern ein allgemeiner Überblick über einige Ansätze. Ich habe noch nicht einmal über Hochverfügbarkeitsoptionen (wie Verfügbarkeitsgruppen und Failover-Clustering) gesprochen. Sie müssen jedes Element überprüfen und einen Plan für den Umgang damit erstellen. In vielerlei Hinsicht müssen Sie auch Ihre Arbeit wiederholen und verfeinern, während Sie voranschreiten.

Zusätzliche Ressourcen:

Bewährte Methoden für die Wartung von SQL Skills VLDB

Mike Fal
quelle
Einverstanden, sehr gut, hilfsbereit, detaillierte Antwort. Vielen Dank! Wir arbeiten daran.
NealWalters
Ein weiterer Faktor, an dem wir arbeiten, ist das Verschieben vieler veralteter Daten in einen ODS (Operational Data Store), um die Hauptdatenbank übersichtlicher zu gestalten. Wir finden auch, dass die "Update Statistics" jeden Morgen etwa 2 bis 2,5 Stunden laufen, und das scheint die allgemeine Leistung zu verlangsamen. Ist es "Best Practice", Update-Stats jeden Tag auszuführen?
NealWalters
Ich werde es normalerweise tun, aber YMMV. Das Risiko, dass Statistiken nicht aktualisiert werden, besteht darin, dass sie veraltet sind und Sie schlechte Abfragepläne haben. Sie müssen analysieren, ob dies ein Problem ist oder nicht, wenn Sie nicht jede Nacht Aktualisierungsstatistiken ausführen. Sie könnten sehen, wie Sie Ihre Statistik-Jobs verteilen und wie Ihre Abfragen im Allgemeinen ablaufen.
Mike Fal