Wie wirkt sich das Verkleinern einer SQL Server-Protokolldatei auf die Leistung aus?

19

Ich besitze eine SQL Server 2008-Datenbank mit einer Datendatei von etwa 2 GB, die Protokolldatei ist jedoch größer als 8 GB. Bei Datenbanken vor 2008 konnte ich das 'Sicherungsprotokoll' und die TRUNCATE_ONLYOption verwenden, aber dies ist bei Datenbanken ab 2008 nicht mehr verfügbar.

Ich habe ein Skript, das die Protokolldatei abschneidet:

USE [MyDatabase]
GO
ALTER DATABASE [MyDatabase] SET RECOVERY SIMPLE WITH NO_WAIT
DBCC shrinkfile('MyDatabase_log', 1)
ALTER DATABASE [MyDatabase] SET RECOVERY FULL WITH NO_WAIT
GO

Dadurch wird die Protokolldatei vollständig gekürzt. Meine Frage lautet jedoch: Beeinträchtigt dies die Leistung?

Ich führe täglich zwei vollständige Sicherungen durch, sodass das Protokoll für die Datenweiterleitung eigentlich nicht erforderlich sein sollte.

MartinHT
quelle

Antworten:

26

Ich empfehle dringend, die Wichtigkeit einer ordnungsgemäßen Verwaltung der Transaktionsprotokollgröße von Paul S. Randal zu lesen .

Die Quintessenz ist, dass es nur zwei wirklich gute Möglichkeiten gibt, das Transaktionsprotokoll zu verarbeiten :

  1. Verwenden Sie entweder regelmäßige LOG-Dateisicherungen, und die LOG-Datei verwendet ihren Speicherplatz nach jeder LOG-Sicherung erneut und wächst nicht auf unbestimmte Zeit oder

  2. Verwenden Sie das SIMPLE-Wiederherstellungsmodell, und Sie müssen sich nicht um die Größe Ihrer LOG-Datei kümmern, da Sie regelmäßig vollständige Sicherungen durchführen.

Was das Abschneiden und die Leistung von LOG-Dateien betrifft, ist, dass Sie immer einen Leistungseffekt erhalten, wenn die LOG-Datei erhöht werden soll (ein Zitat aus dem oben verlinkten Blog-Beitrag):

Wenn Sie das Protokoll verkleinern, wird es erneut vergrößert, was möglicherweise zu einer VLF-Fragmentierung und definitiv zu einer Unterbrechung der Arbeitslast führen kann, während das Protokoll vergrößert wird, da das Protokoll keine sofortige Initialisierung verwenden kann.

Update: Verwechseln Sie das Abschneiden von LOG-Dateien nicht mit dem Verkleinern von DATA-Dateien. Das Verkleinern von DATA-Dateien ist wirklich schlecht. Weitere Informationen finden Sie unter Warum Sie Ihre Datendateien nicht verkleinern sollten .

MicSim
quelle
Die URL zu Warum Sie Ihre Datendateien nicht verkleinern sollten wurde geändert. sqlskills.com/blogs/paul/…
ripvlan
Wie hat die URL zur Wichtigkeit einer ordnungsgemäßen Verwaltung der Transaktionsprotokollgröße: sqlskills.com/blogs/paul/…
Ripvlan
6

OK erstmal ja das log ist auch bei den täglichen vollbackups notwendig, wenn du im problemfall nachholen willst. Wir sichern unser Transaktionslog alle 15 Minuten. Das Problem ist, dass Sie Ihr Transaktionsprotokoll nicht sichern und das Protokoll deshalb so empörend wächst. Sie sollten fast nie ein Transaktionsprotokoll verkleinern müssen, wenn Sie korrekte Transaktionsprotokollsicherungen durchführen.

Sie müssen die Datenbank sichern, bevor Sie das Protokoll abschneiden. Ich schlage vor, dies außerhalb der Geschäftszeiten zu tun, damit keine neuen Daten zwischen dem Backup und der Kürzung eingefügt werden. Richten Sie dann die richtigen Transaktionsprotokollsicherungen ein, damit Sie dieses Problem nie wieder haben.

Was die Leistung angeht, so ist dies schwer zu sagen, ohne die Details Ihrer Systemhardware und -nutzung zu kennen.

HLGEM
quelle
4

Wie schnell wächst das Transaktionslog? Wenn es ziemlich schnell ist, können Sie die Leistung beeinträchtigen, indem Sie es auf nahezu nichts reduzieren, da es einige Zeit in Anspruch nehmen muss, es wieder aufzubauen. Dies bedeutet nicht, dass Sie es nicht von Zeit zu Zeit verkleinern sollten, aber Sie müssen über das Größenproblem nachdenken, anstatt nur auf ein Minimum zu verkleinern. Ist der Perfektionstreffer riesig? Wahrscheinlich nicht, aber es hängt von der Auslastung des Servers ab (Anzahl der Transaktionen usw.).

Eine Sache, die ich als problematisch empfinde, ist "Ich führe täglich 2 vollständige Sicherungen durch, sodass das Protokoll für die Datenweiterleitung eigentlich nicht erforderlich sein sollte." Das Protokoll ist äußerst wichtig für Punkte zwischen Ihren vollständigen Sicherungen. Selbst zweimal am Tag ist keine Protokolldatei für die Notfallwiederherstellung erforderlich, es sei denn, es handelt sich um eine schreibgeschützte Datenbank (wenn dies der Fall wäre, würden Sie die enorme Zunahme der Protokolldatei jedoch nicht feststellen).


quelle
Das Protokoll benötigt ungefähr 4-6 Monate, um diese Größe zu erreichen, daher ist es nicht sehr schnell. Ich dachte (möglicherweise zu Unrecht), dass die Protokolldatei Transaktionen zwischen vollständigen Sicherungen enthielt. Aus diesem Grund habe ich erwähnt, dass ich täglich zwei vollständige Sicherungen durchführe, damit der Inhalt der Protokolldatei zwischen zwei Sicherungen nicht zu groß sein kann. Wie ich bereits sagte, habe ich das Protokolldateikonzept möglicherweise falsch verstanden.