Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/06/2007, 08:35
Avatar de Andres95
Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 5 meses
Puntos: 38
Re: nolock en FROM

aplica en el select...
no necesariamente con joins...
cuando es agregada, no aplica bloqueos compartidos ni respeta los bloqueos exclusivos... es decir, puedes leer la tabla aun cuando tenga transacciones pendientes (los updates, deletes e inserts, generan estos bloqueos asegurar la integridad de la informacion).

Se utiliza para evitar que un select no quede esperando a que las transacciones de una tabla terminen, ojo, no aplica en todos los casos ya que puede haber informacion sensible en el proceso y nos podria traer problemas en la concurrencia.

Para probar, utiliza el Query Analizer (dos pantallas o sesiones), en la primera genera un insert o update en una tabla (con su correspondiente transaccion) pero no la completes... y en la segunda pantalla intenta hacerle un select a la misma tabla, notaras que mientras no se complete la transaccion el select no se ejecutará, a menos que le agregues el nolock...entonces no importara si la transaccion esta incompleta o no...


Ej.

Código:
1ra pantalla (sesion).

Begin Tran T_MiTran

update MiTabla 
Set MiCampo = @MiValor
Where <MiCondicion>

-- Esta ultima sentencia no la ejecutes
Commit Tran T_MiTran


2da. Pantalla.

Select *
From   MiTabla
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.