Wir haben eine riesige Produktionsdatenbank mit einer Größe von ca. 300 GB. Gibt es einen Ansatz zur Verbesserung der Leistung einer Löschabfrage? Momentan liegt die Löschgeschwindigkeit zwischen 1-10k pro Minute, sie ist für uns sehr langsam.
Wir haben eine riesige Produktionsdatenbank mit einer Größe von ca. 300 GB. Gibt es einen Ansatz zur Verbesserung der Leistung einer Löschabfrage? Momentan liegt die Löschgeschwindigkeit zwischen 1-10k pro Minute, sie ist für uns sehr langsam.
Antworten:
Wenn Sie versuchen, eine große Anzahl von Zeilen in einer einzelnen Anweisung zu löschen, warten Sie wahrscheinlich auf die Protokollaktivität. Also kannst du:
TRUNCATEoder DROP/ CREATE.SELECT INTO, fügen Sie die Daten, die Sie behalten möchten, in eine andere Tabelle ein und TRUNCATEverschieben Sie den kleinen Teil zurück. (Oder löschen Sie einfach die alte Tabelle, benennen Sie die neue um und wenden Sie Einschränkungen / Berechtigungen usw. erneut an.)CHECKPOINTdas Protokoll löschen müssen, anstatt Protokollsicherungen durchzuführen. Sie müssen jedoch sicherstellen, dass Sie es zurücksetzen und eine neue vollständige Sicherung erstellen, um die Protokollkette erneut zu initiieren .Es gibt einige Hinweise, aber welche Version verwenden Sie? Ist es Enterprise Edition? Wie auch immer:
Fügen Sie Details hinzu, wenn Sie mit einer großen Datenbank arbeiten, gibt es keine einzige gültige Antwort.
Sie sollten versuchen, sie Block für Block zu löschen, wahrscheinlich in einer Schleife zu löschen, jede Löschiteration ist eine eigene Transaktion und dann das Protokoll am Ende jeder Schleifeniteration zu löschen.
Außerdem müssten Sie die Nummer finden, die Sie als Wert in Chunk zum Löschen der Datensätze verwenden möchten. Es erfordert ein gründliches Testen. Besser wäre es, wenn Sie zuerst den Blockwert in UAT testen können.
Informationen zum weiteren Vorgehen finden Sie unter Aufteilen großer Löschvorgänge in Blöcke
Das Löschen kann langsam sein, wenn die große Tabelle einen rekursiven Fremdschlüssel enthält.
Wenn dies der Fall ist, suchen Sie nach einer geeigneten Zeit, deaktivieren Sie abhängige Dienste, deaktivieren Sie den rekursiven Fremdschlüssel, führen Sie einen massiven Löschvorgang durch und stellen Sie den Fremdschlüssel erneut wieder her.
Ein paar weitere Punkte hinzufügen ...
tablock Option.Um weitere Hilfe zu erhalten, senden Sie die von Ihnen verwendete Abfrage, Tabelleninformationen und blockierende Informationen.