Ver Mensaje Individual
  #7  
Antiguo 03-07-2007
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Reputación: 24
Mick Va por buen camino
Cita:
Empezado por reevil
Las transacciones son metodo para garantizar la integridad de nuestos datos en caso de ocurrir alguna problema al momento de realizar alguna transformacion de los datos, cuando haces un select no puede decirse que transformas datos pues solamente se crea una vista de las tuplas pero estas quedan intactas, entonces no es necesaria la transaccion.

Si me equivoco por favor de correjirme lo antes posible por que tengo mucho que correjir entonces
En interbase/firebird siempre se necesitan abrir una transaccion para lo que sea, si no hay transaccion no puedes leer datos. Las transacciones tambien afectan a la lectura de informacion, pudiendose leer registros distintos segun el tipo de transaccion que se utilice. Esto es debido a que el sistema de arquitectura multi-generacional de interbase es unico y la forma de guardar los registros y gestionar las transacciones es completamente diferente a cualquier otro sistema de base de datos. Por ejemplo en un cierto momento puede haber muchas versiones diferentes de un mismo registro guardadas en la base de datos.

Tipos de transacciones:

READ COMMITED ( RECORD VERSION )

Solo se ven los datos confirmados por otras transacciones, los datos que esten modificados por otras transacciones en curso no existen y se devuelve la ultima version confirmada de los datos.

READ COMMITED (NO RECORD VERSION)

Como la anterior solo se ven los datos confirmados por otras transacciones, pero si datos que es necesario leer han sido modificado por otras transaccions todavia no confirmadas, antes de leer estos datos, se espera a que esas otras transacciones se confirmen o cancelen, para tener asi los datos mas recientes posibles. Esto puede dar lugar a un interbloqueo y que la lectura falle por timeout en el caso de que otra transaccion que ha modificado datos que queremos leer, no finalice o tarde muchisimo en confirmarse o cancelarse. El tipo de transaccion anterior (RECORD VERSION) nunca tiene este problema ya que siempre devolvera los ultimos datos seguros aunque no necesariamente los mas recientes.

SNAPSHOT

Si leemos los datos con un transaccion tipo snapshot, no veremos ningun dato modificado posteriormente a la apertura de nuestra transaccion de lectura. Esto es como sacar una foto fija de la base de datos, tal cual estaba justo en el momento que se inicio la transacion, esto es util para generar informes y que estos sean coherentes, y no les afecten modificaciones de datos que se esten produciendo en el medio del calculo de los informes.

Como se puede ver segun el tipo de transaccion asociada a la lectura de informacion, los datos leidos pueden ser completamente diferentes.

Saludos

Última edición por Mick fecha: 03-07-2007 a las 10:37:16.
Responder Con Cita