Performance-Problem beim Löschen von Datensätzen

25/09/2007 - 09:24 von Christian Havel | Report spam
Hi,

wir löschen aus einer SQL 2000 DB 48.000 Datensàtze mittels des
nachstehenden SQL Statements:

Delete * From myTable where dateTimeField < anyDateTimeValue

Auf dem dateTimeField ist ein Index. Das Problem ist, dass wir einen Timeout
erhalten. Das Löschen dauert ca. 5 Minuten.

Was kann ich tun, um das Löschen zu beschleunigen?

Danke und Gruß
Christian
 

Lesen sie die antworten

#1 Elmar Boye
25/09/2007 - 21:52 | Warnen spam
Hallo Christian,

Christian Havel schrieb ...
wir löschen aus einer SQL 2000 DB 48.000 Datensàtze mittels des
nachstehenden SQL Statements:

Delete * From myTable where dateTimeField < anyDateTimeValue

Auf dem dateTimeField ist ein Index.



Prüfe mal den Abfragepla, ob der Index überhaupt verwendet wird.

Das Problem ist, dass wir einen Timeout erhalten.
Das Löschen dauert ca. 5 Minuten.



Das ist dann eher eine Sache der Client-Anwendung.
Stelle den CommandTimeout der Anweisung auf 5
oder mehr Minuten.

Wenn die 48T ein grösserer Teil der Tabelle sind, so kann
es ggf. zu einer Tabellensperre kommen. Auch kann
es dauern, wenn gleichzeitig noch andere darauf zugreifen.

Evtl. günstiger kann es zu dem sein immer nur wenige
Tausend zu löschen, siehe dazu:
http://support.microsoft.com/kb/323630
"How to resolve blocking problems that are caused by lock escalation in SQL Server"

Gruss
Elmar

Ähnliche fragen