Não há nenhum recurso chamado explicitamente de "bloqueio da guia" no SQL Server. Os mecanismos de travamento do SQL Server são mais sutis do que um simples "bloqueio de guia". O que você pode estar pensando, ou o que alguém pode se referir coloquialmente como um "bloqueio da guia", provavelmente se refere a um desses cenários:
*
bloqueio de nível de mesa: Este é o servidor SQL mais próximo de um "bloqueio da guia". Em determinadas situações, o SQL Server pode adquirir um bloqueio compartilhado (s) ou exclusivo (x) no nível da tabela. Isso significa que a tabela inteira está bloqueada, impedindo que outras operações simultâneas modifiquem ou até leem (dependendo do tipo de bloqueio) a tabela até que a trava seja liberada. Isso geralmente acontece com consultas mal projetadas ou sob alta contenção. Não é uma configuração deliberada que você escolher; É uma conseqüência do plano de acesso da consulta e do nível de isolamento escolhido.
*
Mal-entendimento do bloqueio de nível de linha: O SQL Server utiliza principalmente o bloqueio no nível da linha. Isso significa que apenas as linhas específicas que estão sendo modificadas estão bloqueadas, permitindo que outros usuários acessem e modifiquem simultaneamente outras linhas na mesma tabela. No entanto, se muitas linhas estiverem sendo atualizadas simultaneamente, o sistema ainda poderá experimentar a degradação do desempenho, mesmo que não seja um "bloqueio de guia" completo.
*
Modificação de esquema Bloqueios: Quando você altera a estrutura de uma tabela (adicionando, modificando ou excluindo colunas, adicionando índices etc.), o SQL Server coloca bloqueios para evitar a modificação simultânea do esquema da tabela. Estes são aplicados implicitamente e geralmente têm vida curta.
Por que você raramente vê "bloqueios de guia" em um ambiente moderno do SQL Server: *
Implicações de desempenho: Os bloqueios no nível da mesa restringem severamente a simultaneidade e podem levar a gargalos significativos de desempenho. Eles são altamente indesejáveis na maioria dos cenários.
*
Otimização de bloqueio de nível de linha: O otimizador de consulta do SQL Server se esforça para usar o bloqueio em nível de linha sempre que possível para maximizar a simultaneidade.
* Níveis de isolamento
: O nível de isolamento escolhido (leia-se não comprometido, leido, leitura repetível, serializável) influencia como os bloqueios são adquiridos e mantidos, afetando ainda mais a probabilidade de bloqueio no nível da tabela.
em resumo: Embora o termo "bloqueio da guia" não seja tecnicamente preciso para o SQL Server, ele é usado informalmente para descrever situações em que toda a tabela é bloqueada devido à execução de consultas ou modificações de esquema. Isso geralmente é um sintoma de um problema e não uma característica intencional. Se você estiver encontrando problemas de desempenho que parecem um "bloqueio de guia", investigue suas consultas, indexação e níveis de isolamento para entender e otimizar o modelo de simultaneidade do seu banco de dados. A análise de bloqueio espera usando ferramentas como `sp_whoisactive` ou SQL Server Profiler ajudará a diagnosticar a causa raiz.