Ver Mensaje Individual
  #2  
Antiguo 06-08-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Reputación: 24
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por Marina
He estado leyendo un poco acerca de esto y no aconsejan usarlo porque van quedando las distintas versiones de los registros y afecta el rendimiento del sistema.
Cierto, aunque en realidad lo que ocurre es que, con CommitRetaining, no se lanza el proceso de recolección cooperativa de basura, o lo que es lo mismo, no se eliminan los "deltas" (recuerda que InterBase no almacena copias completas en la multiversión de registro, sólo de los cambios efectivos dentro de cada registro) que se generan en la Arquitectura Multi-Generacional. De todas formas, el proceso de sweeping, o un backup-restore, elimina el problema.

Cita:
Posteado originalmente por Marina
Por otro lado, como se maneja el mismo contexto de la transacción, la vista de la base de datos es siempre la misma, es decir que no vería los cambios que realicen otras transacciones concurrentes
Realmente la transacción no es la misma después de un CommitRetaining. Lo que sucede es que la nueva transacción, que se crea tras el CommitRetaining, aprovecha el contexto que estaba utilizando la transacción anterior para agilizar el proceso. Los cambios que realicen otras transacciones concurrentes, independientemente al uso de Commit o CommitRetaining, sólo podrás verlos si se confirman (con Commit o CommitRetaining) en esas transacciones y, además, tu transacción tiene un nivel de aislamiento suficientemente bajo para verlos (READ COMMITED).

Saludos.
Responder Con Cita