Me preguntaba si alguien podría verificar mi comprensión con respecto a las diferencias entre esos 3 términos relacionados con las bases de datos Oracle.
Muchas fuentes confunden estos términos y no los explican en detalle, por lo que fue un poco difícil encontrar información.
Por lo que sé:
- El commit y el commit rápido son exactamente lo mismo, todos los commits son commits rápidos.
- Una confirmación rápida esencialmente solo actualiza el indicador en la tabla de transacciones del encabezado del segmento deshacer / deshacer para indicar que la transacción se ha confirmado. Sin embargo, el bloque real no se revisa, lo que significa que la dirección de byte de deshacer (UBA) en la lista de transacciones interesadas (ITL) que se encuentra en el encabezado del bloque de datos todavía apunta a la tabla de transacciones del segmento de deshacer correspondiente. Además, los bytes de bloqueo de las filas correspondientes no se liberan y el recuento de bloqueo en el ITL no se modifica (las filas siguen bloqueadas).
- En una limpieza de confirmación, el bloque se vuelve a visitar y el ITL se actualiza con el SCN de confirmación. Sin embargo, el recuento de bloqueos en el ITL y el byte de bloqueo almacenado con cada fila todavía no se actualiza (la fila sigue bloqueada al igual que en la confirmación rápida), esto no genera rehacer aunque se cambie el bloque.
- Los bloques que se confirmaron normalmente (== confirmación rápida) se someterán a una limpieza de bloque retrasada la próxima vez que se toquen (y generarán rehacer).
- Los bloques que se sometieron a la limpieza de confirmación se someterán a la limpieza del bloque de registro retrasado la próxima vez que se toquen (y generarán rehacer).
¡Ojalá alguien pueda verificar estos puntos! ¡Gracias!