O que isso quer dizer na prática?
Na prática quer dizer que os comandos são executados um a cada vez e não simultaneamente. Isso acontece para tentar garantir a integridade e a consistência de dados. Já que o banco "trava" a tabela, não podendo outras threads ou outros usuários poderem utilizar a tabela, até que o comando seja finalizado.
O comando NOLOCK evita esses bloqueios desnecessários e não acontece os deadlocks.
Sintaxe do Comando:
"Select * from table with (NOLOCK)"
"Select * from table with (NOLOCK)"
Quais situações seria interessante o uso e porque utilizar o NOLOCK?
Imagine em uma base de dados, que há bilhares de dados. O tempo que levaria para selecionar todos estes dados seria muito grande, inclusive com junções de várias tabelas. Agora imagine, uma rotina no banco que faz um update 2 - 3 vezes ao dia. Com o LOCK padrão , os comandos select seriam executados um a um , e logo depois o update a partir do select um a um. Podemos imaginar que o tempo gasto neste job seria muito alto. Em um sistema enterprise, o LOCK seria inviável, pelo fato que causaria lentidão e até mesmo acessos bloqueados para os usuários. Por isso utilizamos o NOLOCK , onde até a própria Microsoft recomenda o uso deste comando, para o aumento de performance.
Obs: Apesar do NOLOCK ser uma solução para vários casos, o seu uso pode gerar vários erros de inconsistência como poderemos ver nos próximos tópicos.
É isso ai galera, abraços e NOLOCK na cabeça haha.
É isso ai galera, abraços e NOLOCK na cabeça haha.
Muito bom!
ResponderExcluir