Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 8936|Resposta: 0

Bloqueios SQL NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX

[Copiar link]
Publicado em 20/07/2016 14:02:51 | | |

SEM TRAVA
Quando essa opção é selecionada, o SQL Server lê ou modifica os dados sem nenhum bloqueio. Nesse caso, o usuário pode ler dados de uma Transação Não Comprometida ou Reverter, conhecido como "dados sujos".

TRAVA DE CONTENÇÃO
Quando essa opção é selecionada, o SQL Server mantém esse bloqueio compartilhado até o final de toda a transação, sem liberá-lo no caminho.

ATUALIZAÇÃO
Quando essa opção é selecionada, o SQL Server usa um bloqueio de modificação em vez de um bloqueio compartilhado ao ler dados e mantém esse bloqueio até o final de toda a transação ou comando. Essa opção garante que múltiplos processos possam ler dados ao mesmo tempo, mas apenas esse processo pode modificar os dados.

TABLOCK
Quando essa opção é selecionada, o SQL Server colocará um bloqueio compartilhado em toda a tabela até o término do comando. Essa opção garante que outros processos só possam ler e não modificar os dados.

PAGLOCK
Essa opção é a padrão e, quando selecionada, o SQL Server usa um bloqueio de página compartilhado.

TABLOCKX (Bloqueio de Mesa Exclusivo)
Quando essa opção é selecionada, o SQL Server colocará um bloqueio em toda a tabela até que o comando ou transação termine. Isso impedirá que outros processos leiam ou modifiquem os dados na tabela.

O HOLDLOCK mantém o bloqueio compartilhado até que toda a transação seja concluída e deve ser liberado assim que o objeto travado não for necessário, igual ao nível de isolamento da transação SERIALIZÁVEL

A instrução NOLOCK é executada sem emitir um bloqueio compartilhado, permitindo leituras sujas, que é igual ao nível de isolamento da transação READ UNCOMMITTED

O PAGLOCK usa múltiplos bloqueios de página onde um bloqueio de tabela é usado

O READPAST permite que o SQL Server pule linhas bloqueadas e execute transações, e para níveis de isolamento de transações READ UNCOMMITTED, pula apenas bloqueios RID, não travamentos de página, zona e tabela

O ROWLOCK impõe o uso de rowlocks

O TABLOCKX impõe o uso de um lock exclusivo em nível de tabela, que impede que qualquer outra transação utilize a tabela durante a transação

O UPLOCK força o uso de atualizações ao ler uma tabela sem um bloqueio compartilhado

Nota: A diferença entre bloquear uma tabela em um banco de dados
SELECT * FROM table WITH (HOLDLOCK) Outras transações podem ler a tabela, mas não podem atualizar ou excluir
SELECT * FROM tabela COM (TABLOCKX) Outras transações não podem ler, atualizar e excluir tabelas




Anterior:Travados, leituras sujas, leituras irrepetíveis e leituras falsas em SQL
Próximo:O SQL Server analisa o impasse e libera o impasse
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com