Można użyć dziennika widoku zmaterializowanego (MV), aby umożliwić MV szybkie odświeżenie, które modyfikuje tylko zmienione dane. Jednak różne warunki uniemożliwiają MV korzystanie z dziennika i dlatego wymagają pełnego odświeżenia. Oracle zaimplementowało całkowite odświeżenie atomowe jako usunięcie i wstawienie każdego rekordu. Robi to, nawet jeśli ostatecznie nie ma żadnych zmian w danych.
Czy istnieje sposób na uczynienie tej replikacji inteligentną w odniesieniu do generowania powtórzeń ? MERGE, a następnie DELETE, wymaga dwukrotnego zapytania do źródła. Czy warto zbiorczo gromadzić dane, aby wykonać LICZBĄ POŁĄCZENIE i USUŃ? Czy jest lepszy sposób?
Aktualizacja:
Zbadałem, używając globalnego tymczasowego stołu jako obszaru przejściowego. Mimo że wykorzystują mniej niż połowę przeróbek, nadal używają ich za dużo.
insert
s. Jest to ściśle zgodne z wynikami, które widzę i jest lepsze, ale nie tak dobre, jak bym chciał.
append
podpowiedzi) nie są idealnymi warunkami do ograniczenia powtarzania - uruchomiłem kilka testów, aby pokazać, co mam na myśli. Wysłany jako odpowiedź, ponieważ nie zmieści się w komentarzu
insert
operacje generują znacznie mniej operacji cofaniadelete
lubupdate
operacji (prawie żadnych). Posiadanie wielu GTT, aby uniknąć kosztownych operacji, może być dobrym podejściem