Mi chiedevo se qualcuno potesse verificare la mia comprensione delle differenze tra quei 3 termini relativi ai database Oracle.
Molte fonti confondono questi termini e non li spiegano in dettaglio, quindi è stato un po 'una sfida trovare informazioni.
Da quello che raccolgo:
- Commit e commit rapido sono esattamente la stessa cosa, tutti i commit sono commit rapidi.
- Un commit veloce essenzialmente aggiorna solo il flag nella tabella delle transazioni dell'intestazione del segmento di annullamento / rollback per indicare che la transazione è stata impegnata. Tuttavia, il blocco effettivo non viene rivisitato, nel senso che l'indirizzo di byte di annullamento (UBA) nell'elenco delle transazioni interessate (ITL) che si trova nell'intestazione del blocco di dati punta ancora alla tabella delle transazioni del segmento di annullamento corrispondente. Inoltre, i byte di blocco delle righe corrispondenti non vengono rilasciati e il conteggio dei blocchi nell'ITL rimane invariato (le righe sono ancora bloccate).
- In una pulizia di commit, il blocco viene rivisitato e l'ITL viene aggiornato con il commit SCN. Tuttavia, il conteggio dei blocchi nell'ITL e il byte di blocco memorizzati con ogni riga non vengono ancora aggiornati (la riga è ancora bloccata proprio come nel commit rapido), ciò non genera redo anche se il blocco viene modificato.
- I blocchi che sono stati commessi normalmente (== commit rapido) saranno sottoposti a Pulizia blocchi ritardata quando vengono toccati successivamente (e generano ripetizione).
- I blocchi sottoposti a ripulitura del commit subiranno una ripulitura dei blocchi di registrazione ritardata quando vengono toccati successivamente (e generano ripetizione).
Spero che qualcuno possa verificare questi punti! Grazie!