UTNianos

Versión completa: [Duda][Transacciones] Lectura fantasma o sucia?
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Si tengo una transacción A con nivel de aislamiento READ COMMITTED o REPETEABLE READ, y en una transacción B se hace un INSERT, pero no hizo commit aún, y la transacción A vuelve a leer, aparece el registro insertado(lectura fantasma) o sólo si la transaccion A es READ UNCOMMITED (lectura sucia)?

O sea, sé que READ COMMITTED y REPETEABLE READ no tienen dirty reads, pero no me acuerdo si se considera dirty a los registros modificados/insertados por otra transacción no comiteada o sólo a los modificados.
Esto es lo que tengo en mi resumen


Lecturas Fantasma
Cuando no se aplica bloqueo de rango, una lectura que involucre un rango de registros puede retornar una cantidad distinta de registros ya que en otra transaccion se agrego un registro y se commiteo entre las dos lecturas.

Lecturas irrepetibles
Cuando el bloqueo de lectura solo se aplica durante el SELECT, hace que otra transaccion pueda modificar el registro leido previamente, y luego de commitearse ese cambio, la nueva lectura traiga otros datos.

Lecturas Sucias
Cuando no se aplica bloqueos, hace que una transaccion pueda ver cambios aun no commiteados realizados por otra transaccion, lo cual es peligroso ya que la otra transaccion puede fallar y me quedo inconsistente

Las sucias habla de cambios, creo que incluye a la insercion
de memoria, sin mucha fuente para sustentar lo que digo: si, se los considera dirty hasta que la transaccion se comitee
si, se los considera dirty read
Sin garantías, yo creería que con Read commited *no* leería las cosas no commiteadas. Incluso creo que si la A no fuera transacción pero la B sí, hasta que la B no se commitee el resto del mundo no se va a enterar.

Pero 0 chequeado, eh.
Gracias a los 4 =D

(20-04-2014 17:43)sebasamaro escribió: [ -> ]Esto es lo que tengo en mi resumen


Lecturas Fantasma
Cuando no se aplica bloqueo de rango, una lectura que involucre un rango de registros puede retornar una cantidad distinta de registros ya que en otra transaccion se agrego un registro y se commiteo entre las dos lecturas.

Lecturas irrepetibles
Cuando el bloqueo de lectura solo se aplica durante el SELECT, hace que otra transaccion pueda modificar el registro leido previamente, y luego de commitearse ese cambio, la nueva lectura traiga otros datos.

Lecturas Sucias
Cuando no se aplica bloqueos, hace que una transaccion pueda ver cambios aun no commiteados realizados por otra transaccion, lo cual es peligroso ya que la otra transaccion puede fallar y me quedo inconsistente

Las sucias habla de cambios, creo que incluye a la insercion
URLs de referencia