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.
sql-server
query-performance
Gemeinschaft
quelle
quelle
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:
TRUNCATE
oderDROP
/CREATE
.SELECT INTO
, fügen Sie die Daten, die Sie behalten möchten, in eine andere Tabelle ein undTRUNCATE
verschieben 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.)CHECKPOINT
das 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 .quelle
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.
quelle
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
quelle
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.
quelle
Ein paar weitere Punkte hinzufügen ...
tablock
Option.Um weitere Hilfe zu erhalten, senden Sie die von Ihnen verwendete Abfrage, Tabelleninformationen und blockierende Informationen.
quelle