Un journal de vue matérialisée (MV) peut être utilisé pour permettre à un MV d'effectuer une actualisation rapide qui ne modifie que les données modifiées. Cependant, diverses conditions empêchent le MV d'utiliser le journal et nécessitent donc une actualisation complète. Oracle a implémenté une actualisation atomique complète en tant que suppression et insertion de chaque enregistrement. Il le fait même s'il n'y a finalement aucun changement dans les données.
Existe-t-il un moyen de rendre cette réplication intelligente en ce qui concerne la génération de redo ? Un MERGE suivi d'un DELETE nécessite d'interroger la source deux fois. Vaut-il la peine de collecter les données en bloc pour effectuer une fusion et une suppression en bloc? Y a-t-il une meilleure façon?
Mettre à jour:
J'ai exploré l'utilisation d'une table temporaire globale comme zone de transit. Bien qu'ils utilisent moins de la moitié de la répétition, ils en utilisent encore beaucoup.
la source
insert
les opérations génèrent beaucoup moins d'annulation que les opérationsdelete
ouupdate
(presque aucune en fait). Avoir plusieurs gtts pour éviter des opérations coûteuses pourrait être une bonne approcheinsert
s. Cela correspond étroitement aux résultats que je vois et est meilleur mais pas aussi bon que je le souhaiterais.append
indice) ne sont pas des conditions idéales pour réduire le rétablissement - j'ai effectué des tests pour montrer ce que je veux dire. Publié comme réponse car ils neRéponses:
Ceci est juste destiné à démontrer l'utilisation de refaire de diverses
insert
opérations plutôt que de répondre à la question entière. Les résultats sur mon instance 10g ne sont pas 100% déterministes, mais la vue d'ensemble est restée la même à chaque fois que j'ai parcouru.Pour les tables de tas, je ne sais pas pourquoi elles ont
insert /*+ append */
généré plus de redo.banc d'essai:
tester:
résultat:
la source
Bonne question. J'ai "résolu" ce problème pour ma situation il y a quelque temps en faisant les MV et tous les index sur eux NOLOGGING. Cela ne servait à rien ma situation - je faisais quand même un rafraîchissement complet de la vue, pourquoi aurais-je besoin de refaire?
la source