Domanda

Abbiamo un obbligo di eliminare le righe nell'ordine di milioni da più tabelle come un processo batch (si noti che non stiamo cancellando tutte le righe, che viene eliminato in base a un timestamp memorizzato in una colonna indicizzata). Ovviamente un normale DELETE prende sempre (a causa di registrazione, vincolo referenziale controllo etc.). So che nel mondo LUW, abbiamo ALTER TABLE non è registrato inizialmente, ma io non riesco a trovare l'un'istruzione SQL equivalente per DB2 v8 z / OS. Chiunque ha tutte le idee su come fare questo veramente veloce? Inoltre, tutte le idee su come evitare i controlli referenziale quando si eliminano le righe? Per favore mi faccia sapere.

È stato utile?

Soluzione 3

Abbiamo modificato lo spazio tabella in modo che il blocco si sarebbe verificato a livello di tabella invece che a livello di pagina. Una volta che abbiamo cambiato DB2 necessaria solo una serratura per fare il DELETE e non abbiamo avuto problemi con il bloccaggio. Per quanto riguarda la registrazione, abbiamo semplicemente chiesto al cliente di essere a conoscenza della quantità di registrazione necessaria (come non sembrano essere una soluzione per aggirare il problema di registrazione). Per quanto riguarda i vincoli, abbiamo appena caduto e li ricreato dopo l'eliminazione.

Grazie a tutti per il vostro aiuto.

Altri suggerimenti

In passato ho risolto questo tipo di problema esportando i dati e ri-caricamento con un comando sostituire stile. Ad esempio:

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

Poi si può caricare di nuovo nel, sostituendo la roba vecchia.

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

Non sono sicuro se questo sarà più veloce o meno per voi (probabilmente dipende dal fatto che si sta eliminando più voi che stanno tenendo).

  1. Fare le chiavi esterne hanno già indici così?

  2. Come avete il vostro set di azione di eliminazione? CASCADE, NULL, NO ACTION

  3. Usa SET INTEGRITY a vincoli disabilitare temporaneamente sul processo batch. http://www.ibm.com/developerworks/ dati / library / techarticle / dm-0401melnyk / index.html

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top