Es wurde berichtet, dass Abfragen langsam ausgeführt wurden oder das Zeitlimit in den frühen Morgenstunden überschritten wurde. Der einzige Job, den ich ausgeführt sehe, der sich möglicherweise darauf auswirkt, ist unser Datenbanksicherungsjob.
Die Datenbank selbst hat ungefähr 300 GB, und der Sicherungsjob beginnt um 4:30 Uhr und endet erst kurz nach 7:00 Uhr. Die aktuelle Syntax unseres Sicherungsjobs lautet:
BACKUP DATABASE [DatabaseName]
TO DISK = N'E:\Database Backups\DatabaseName.Bak'
WITH INIT, NOUNLOAD, NAME = N'DatabaseName.Bak',
NOSKIP, STATS = 10, NOFORMAT
E:\
ist eine Partition auf dem Server, die sowohl die Datenbanken als auch die Datenbanksicherungen enthält.
Es sollte auch angemerkt werden, dass dies ein virtueller Server ist, kein dedizierter Standalone-Server. Unmittelbar nach dem Umstieg auf einen virtuellen Server haben wir Beschwerden über Verzögerungen während des Sicherungsvorgangs erhalten. Ich denke, das hängt möglicherweise damit zusammen.
Gibt es eine Möglichkeit, diesen Sicherungsjob auszuführen, damit die Abfrageleistung während der Ausführung nicht beeinträchtigt wird?
Wir verwenden SQL Server 2005
quelle
Dies ist ein häufiges Problem, es gibt mehrere Lösungen und es hängt wirklich von Ihrer Umgebung ab. Gehen wir sie durch:
1- Backup-Komprimierung im laufenden Betrieb
2008 wurde R1 Backup Compression in Enterprise verfügbar, 2008R2 wurde es in Standard verfügbar. Das ist riesig. Es wird Ihnen viel Zeit sparen. Wenn Sie ein Upgrade durchführen können, greifen Sie zu. Wenn dies nicht möglich ist, lesen Sie das HyperBak- Dienstprogramm von RedGate oder Quest LiteSpeed . Beide haben eine kostenlose Testversion.
2- Vollständige und Diff-Backups
Ich habe eine 2-TB-Produktdatenbank geerbt, was bei einem großen Internet-Unternehmen, das ich ausgearbeitet habe, zu vielen Timeouts geführt hat. Wir haben vollständige und differenzielle Backups aktiviert, wodurch wir viel Zeit gespart haben. Ich würde eine vollständige Sicherung am Sonntag um 12:00 Uhr durchführen, wenn die Aktivität gering war, und während der Woche Differenzen durchführen. Das hat viel Platz gespart. Die Arbeit von Diff unterscheidet sich von den Transaktionsprotokollen, da sie darauf abzielen, welche Datenbankseiten geändert wurden. Alle geänderten Seiten werden gesichert. Sie führen also eine vollständige Wiederherstellung durch und anschließend die Diff-Wiederherstellung, um die geänderten Seiten hinzuzufügen.
3- Was ist Ihr Engpass?
Eine Engpassanalyse ist wichtig für die Diagnose. Sichern Sie auf demselben Festplattenarray wie Ihre Datendateien? Werden Ihre Datendateien gebunden? Was ist Ihr DISK SEC / READ und DISK SEC / WRITE für die Datenplatten während der Sicherungen? Ich habe die Backups geändert, um 4 Dateien zu erstellen. Jede Datei hat einen eigenen Thread-Writer und in unserem SAN hat das super geklappt. Testen Sie es aus, ich habe 45 Minuten durch das Erstellen von nur 4 Backup-Dateien rasiert. Stellen Sie einfach sicher, dass Ihre oben aufgeführten Festplattenkennzahlen niedrig sind. Holen Sie sich eine Grundlinie.
4- Auf einen anderen Server replizieren und sichern
Dieser ist etwas fortgeschritten. Sie müssen sicherstellen, dass Ihre replizierte Datenbank auf dem neuesten Stand ist, und Sie müssen dafür eine ordnungsgemäße Überwachung durchführen. Ist dies jedoch der Fall, können Sie nur die replizierte Datenbank sichern.
quelle
Sie können diese Parameter verwenden:
BLOCKSIZE - Wählen Sie die Größe 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536. (in KB)
BUFFERCOUNT - Gibt die Gesamtzahl der E / A-Puffer an, die für den Sicherungsvorgang verwendet werden sollen. Sie können eine beliebige positive Ganzzahl angeben. Eine große Anzahl von Puffern kann jedoch aufgrund eines unzureichenden virtuellen Adressraums im Prozess "Sqlservr.exe" zu Fehlern führen. - von MSDN
MAXTRNASFERSIZE - Es ist von 65536 Bytes (64 KB) bis 4194304 Bytes (4 MB)
quelle
Versuch es. Es löste das Problem, dass das Zeitlimit abgelaufen ist, während die Datenbank groß war.
quelle