En SQL Server 2005 hay un nuevo "Isolation level" que se llama "SNAPSHOT".
La finalidad de este nivel de loqueo es que el usuario siempre lea una vista consistente de los datos (no dirty read) y a la vez no bloquear otros lectores o escritores accediendo a los mismos datos. Similarmente los escritores no loquean a los lectores.
En SQL Server 2000 ya está el isolation level "READ COMMITED" que no hace lecturas sucias, la única contra que tiene es que antes de leer hace un shared lock (lockeando a un posible escritor como un mecanismo de evitar posibles dirty reads).
De cualquier forma las aplicaciones Genexus/SQLServer (al menos hasta GeneXus 8.0 que es la versión con la que trabajo actualmente) usan en algunas sentencias el hint "NOLOCK" lo que es equivalente al isolation level "READ UNCOMMITTED" (que es sinónimo de dirty reads). Pese a los "dirty reads", este isolation level tiene una ventaja y es que no lockea nada.
Ahora con este nuevo isolation level se podría lograr lo mejor de 2 mundos: no dirty reads y loqueo cero.
No hay comentarios.:
Publicar un comentario