Ich verfolge seit zwei Wochen das Wachstum von Dateien über den Datenkollektor in SQL Server 2008 R2. Die Datenbank wächst stetig um 35 (MB) / Tag. Die DB hat die ursprüngliche Größe von 2 GB noch nicht erreicht.
Das automatische Wachstum der DB-Dateien ist auf 5 MB festgelegt, und ich möchte einen anderen Ansatz ausprobieren. Daher suche ich nach Vorschlägen und / oder Kommentaren.
Es gibt eine Optimierungsaufgabe, die jede Woche am Sonntagabend um 1:30 Uhr ausgeführt wird. Die Aufgabe wird:
- Überprüfen Sie die Datenbankintegrität
- Verkleinern Sie die Protokolldatei - (Dies ist in Ordnung, da der Protokollierungsmodus einfach ist.)
- Datenbank verkleinern
- Index neu organisieren
- Index neu erstellen
- Statistiken aktualisieren
- Bereinigen Sie den Verlauf
Ich möchte dem wöchentlichen Optimierungsplan zwei weitere Schritte hinzufügen:
- Erweitern Sie die Datenbankdatei um 500 MB, wenn der verwendete Speicherplatz einen bestimmten Schwellenwert oder eine bestimmte Gesamtgröße erreicht.
- Vergrößern Sie die Protokolldatei um 250 MB (nach dem Verkleinern), wenn der verwendete Speicherplatz einen bestimmten Schwellenwert der Gesamtgröße erreicht.
Ich hoffe, durch die Verlagerung der Wachstumslast in Offline-Stunden die Leistung zu verbessern, indem ich die Anzahl der automatischen Wachstumsereignisse bei hoher Belastung reduziere.
Ich habe zwei Fragen zu automatisch wachsenden Dateien.
- Der beste Ort, um die Datei-Grow-Schritte zu platzieren, wäre vor den aktuellen Schritten oder danach?
- Wenn ich das verwende
ALTER DATABASE|MODIFY FILE
, um die Datei zu vergrößern, wie kann ich dann feststellen, obSpaceUsedInFile >= (TotalFileSpace-@AllowanceThreshold)
?
Antworten:
Sie sollten darauf abzielen, so wenig wie möglich automatisch zu wachsen. Sieben Mal am Tag, auch bei sofortiger Initialisierung der Dateien.
Mach keine Shrink Database. Je. Shrinkfile vielleicht, aber erst nach einem außergewöhnlichen Ereignis. Es zu verkleinern, nur um wieder zu wachsen, ist eine Übung der Sinnlosigkeit und sollte eigentlich als Auto-Fragment bezeichnet werden.
Wenn das Wiederherstellungsmodell einfach ist, sollten Sie Ihre Protokolldatei auf keinen Fall um 250 GB vergrößern müssen. Der in der Datei belegte Speicherplatz wird im Laufe der Zeit automatisch bereinigt, es sei denn, Sie haben vor einem Monat eine Transaktion gestartet und haben nicht die Absicht, sie jemals festzuschreiben oder zurückzusetzen.
Mein Rat wäre also:
Wachsen Sie die Datendatei in einer ruhigen Zeit manuell auf eine Größe, die für mehrere Monate Wachstum geeignet ist. Wofür speichern Sie es in der Zwischenzeit?
Stellen Sie das automatische Wachstumsinkrement für die Datendatei auf einen relativ kleinen Wert ein (damit Benutzer nicht unterbrochen werden, wenn dies geschieht) und melden Sie sich bei diesem Ereignis (Sie können es beispielsweise im Standard-Trace oder über "Erweitert" abfangen) Veranstaltungen). Dies kann Ihnen sagen, dass Sie den von Ihnen geschätzten Höhepunkt erreichen und es Zeit ist, erneut manuell zu wachsen. An dieser Stelle möchten Sie dieses Handbuch aufbewahren, falls Sie eine neue Datei / Dateigruppe auf einem anderen Laufwerk hinzufügen möchten, um den Speicherplatz aufzunehmen, da Sie schließlich das aktuelle Laufwerk füllen werden.
Erweitern Sie die Protokolldatei automatisch auf das Doppelte ihrer Größe. Es sollte nicht automatisch weiter wachsen, es sei denn, es gibt eine abnormale Transaktion, die die Dinge aufhält. Sie sollten auch dieses Ereignis überwachen, damit Sie über sie Bescheid wissen.
quelle
Automatisches Wachstum sollten Sie nach Möglichkeit vermeiden. Das Problem ist, dass Sie keine Kontrolle darüber haben, wann das Wachstum stattfinden kann und Ihr System dabei einen schweren Schlag erleiden kann.
Stellen Sie die Dateigröße für einen Monat oder länger auf einen vernünftigen Wert ein und überwachen Sie die Wachstumsrate. Berechnen Sie dann, wie viel Speicherplatz Sie für die x-fache Zeit veranschlagen, und stellen Sie die Größe auf diesen Wert + eine Fehlerquote ein.
Ich habe einen einfachen Überwachungsjob eingerichtet, der mich benachrichtigt, wenn die Dateigröße vor dem automatischen Wachstum ein vordefiniertes Maximum erreicht. Sie könnten so etwas verwenden:
Dies könnte natürlich als Job eingeplant werden.
quelle