Frage

Wir haben eine Anforderung Zeilen in der Größenordnung von Millionen aus mehreren Tabellen als Batch-Job zu löschen (beachten Sie, dass wir nicht alle Zeilen löschen, sind wir auf einem Zeitstempel in einer indizierten Spalte gespeichert Löschen von Basis). Offensichtlich eine normale DELETE dauert ewig (wegen der Protokollierung, Verweisbeschränkung Prüfung etc.). Ich weiß, dass in der LUW Welt, haben wir zunächst nicht ALTER TABLE LOGGED aber ich kann nicht die eine äquivalente SQL-Anweisung zu finden für DB2 v8 z / OS zu sein scheinen. Jeder hat irgendwelche Ideen, wie dies wirklich schnell zu tun? Außerdem werden alle Ideen, wie die Referenzüberprüfungen zu vermeiden, wenn die Zeilen zu löschen? Lass es mich wissen, bitte.

War es hilfreich?

Lösung 3

Ich modifizierte, um die Tabellen so die Sperre an der Tabellenbereichsebene auftreten würde statt auf Seitenebene. Sobald wir diese DB2 geändert erforderlich nur eine Sperre die DELETE zu tun, und wir haben keine Probleme mit Sperren. Wie für die Protokollierung, fragten wir nur die Kunden von der Menge zu beachten erforderliche Protokollierung (da es keine Lösung zu sein schien die Protokollierung Problem zu umgehen). Wie für die Zwänge, uns nur fallen gelassen und sich nach dem Löschen neu erstellt.

Danke allen für Ihre Hilfe.

Andere Tipps

In der Vergangenheit habe ich diese Art von Problem gelöst, indem die Daten und den Export Nachladen es mit einem Stil Befehl ersetzen. Zum Beispiel:

EXPORT to myfile.ixf OF ixf
SELECT * 
FROM my_table 
WHERE last_modified < CURRENT TIMESTAMP - 30 DAYS;

Dann können Sie es LADEN zurück in die alten Sachen zu ersetzen.

LOAD FROM myfile.ixf OF ixf
REPLACE INTO my_table
NONRECOVERABLE INDEXING MODE INCREMENTAL;

Ich bin mir nicht sicher, ob dies schneller sein wird oder nicht für Sie (wahrscheinlich hängt es davon ab, ob Sie das Löschen mehr als Sie halten ist).

  1. Haben die Fremdschlüssel bereits Indizes sowie haben?

  2. Wie haben Sie Ihre Löschaktion Set? CASCADE, NULL, NO ACTION

  3. Verwenden Sie SET INTEGRITY, um vorübergehend deaktivieren Einschränkungen für den Batch-Prozess. http://www.ibm.com/developerworks/ Daten / library / techarticle / dm-0401melnyk / index.html

http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top