Bonsoir,
je viens de parcourir la traduction d'un article de ce monsieur sur le site de Pachot concernant les traitements batch pour les mises à jour de données en masse... J'ai envoyé quelques questions à l'auteur restées sans réponses (pour l'instant) aussi je voulais vous les soumettre :
L'article affirme :
La question que je me pose est donc comment faire sans.Les update (et delete) de masse sont à proscrire
Les techniques utilisées par l'auteur (d'après son blog) :
Savez vous comment mettre en oeuvre ces techniques ?
Instead of bulk UPDATES/DELETES, use set theory to create the compliment via CTAS (or similar). That is, for DELETE recreate what you want to keep, for UPDATE, recreate with the modifications.
There are a few reasons for this:
1) Compression – UPDATES/DELETES are more expensive with compression and they generally leave the data in a much less compressed format
2) Logging – Both UPDATE and DELETE are logging operations and a NOLOGGING CTAS or INSERT /*+ APPEND */ are not.
As a result, it is often faster and better (from a compression point of view) to recreate the segment.
Mais si on a une base opérationnelle de production avec potentiellement un utilisateur loggué
peut-on se permettre ce genre de manoeuvre...
Ou trouver un exemple de ces utilisations pour mises à jour en masse ?
J'imagine qu'il se retrouve avec un seul upsert au final, mais comment traite-t-il ses erreurs potentielles ?" j’ai codé complètement un flux de donnée qui travaille de manière ensembliste, avec juste une poignée de requêtes SQL (et pas de PL/SQL). "
Comment récupère-til les lignes en erreur ?
Merci pour votre avis sur la question,
Lek.
Partager