Question

Nous avons une obligation de supprimer des lignes dans l'ordre de millions de plusieurs tables comme un traitement par lots (notez que nous ne supprimons toutes les lignes, nous supprimons la base d'un horodatage stocké dans une colonne indexée). Il est évident qu'une normale prend toujours SUPPRIMER (en raison de l'exploitation forestière, contrainte référentielle vérification, etc.). Je sais que dans le monde LUW, nous avons ALTER TABLE PAS LOGGED INITIALEMENT, mais je ne peux pas sembler trouver une instruction SQL équivalent pour DB2 v8 z / OS. Toute personne a des idées sur la façon de le faire très vite? En outre, des idées sur la façon d'éviter les contrôles référentiels lors de la suppression des lignes? S'il vous plaît, faites-moi savoir.

Était-ce utile?

La solution 3

Nous avons modifié le tablespace de sorte que le blocage se produirait au niveau tablespace au lieu d'au niveau de la page. Une fois que nous avons changé que seul DB2 requis un verrou pour faire le SUPPRIMER et on n'a pas eu de problèmes avec verrouillage. En ce qui concerne l'exploitation forestière, nous avons demandé au client de connaître le montant de l'exploitation forestière nécessaire (car il ne semble pas être une solution pour contourner le problème de l'exploitation forestière). En ce qui concerne les contraintes, nous avons juste largué et les recréés après la suppression.

Merci à tous pour votre aide.

Autres conseils

Dans le passé, j'ai résolu ce genre de problème en exportant les données et rechargeons avec une commande de style remplacer. Par exemple:

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

Ensuite, vous pouvez le charger de nouveau en remplaçant les vieux trucs.

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

Je ne suis pas sûr que ce sera plus rapide ou non pour vous (sans doute cela dépend si vous supprimez plus que vous gardez).

  1. Faites les clés étrangères ont déjà des indices aussi bien?

  2. Comment avez-vous votre action Suppr.régl.impr? CASCADE, NULL, NO ACTION

  3. Utilisez SET INTÉGRITÉ pour désactiver temporairement les contraintes sur le processus de traitement par lots. http://www.ibm.com/developerworks/ données / bibliothèque / techarticle / dm-0401melnyk / index.html

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top