Zastanawiałem się, czy ktoś może zweryfikować moje rozumienie różnic między tymi 3 terminami w odniesieniu do baz danych Oracle.
Wiele źródeł myli te terminy i nie wyjaśnia ich szczegółowo, więc znalezienie informacji było trochę trudne.
Z tego co zebrałem:
- Zatwierdzanie i szybkie zatwierdzanie są dokładnie takie same, wszystkie zatwierdzenia są szybkimi zatwierdzeniami.
- Szybkie zatwierdzenie zasadniczo aktualizuje tylko flagę w tabeli transakcji nagłówka segmentu cofania / wycofywania, aby wskazać, że transakcja została zatwierdzona. Jednak rzeczywisty blok nie jest ponownie odwiedzany, co oznacza, że adres bajtu cofania (UBA) na liście zainteresowanych transakcji (ITL), który znajduje się w nagłówku bloku danych, nadal wskazuje na tabelę transakcji odpowiedniego segmentu cofania. Ponadto bajty blokujące odpowiednich wierszy nie są zwalniane, a liczba blokad w ITL pozostaje niezmieniona (wiersze nadal zablokowane).
- Podczas czyszczenia zatwierdzenia blok jest ponownie odwiedzany, a ITL jest aktualizowany za pomocą SCN zatwierdzenia. Jednak liczba blokad w ITL i bajt blokujący zapisany z każdym wierszem nadal nie jest aktualizowany (wiersz nadal blokowany, podobnie jak w przypadku szybkiego zatwierdzania), nie generuje to ponownego wykonania, nawet jeśli blok został zmieniony.
- Bloki, które zostały zatwierdzone normalnie (== szybkie zatwierdzenie), zostaną poddane opóźnionemu czyszczeniu bloków, gdy zostaną ponownie dotknięte (i wygenerują ponowienie).
- Bloki, które zostały poddane czyszczeniu zatwierdzeń, zostaną wyczyszczone z opóźnieniem przy czyszczeniu bloków rejestrowania, gdy zostaną ponownie dotknięte (i wygenerują ponownie).
Mam nadzieję, że ktoś może zweryfikować te punkty! Dzięki!