Entendo que um encadeamento refazer repetindo uma operação DDL pode ser bloqueado por uma SELECT
consulta de execução longa na réplica secundária legível, porque a última contém um Sch-S
bloqueio, evitando assim que a primeira adquira um Sch-M
bloqueio. A questão é esta - essa operação DDL bloqueada, por sua vez, bloqueará SELECT
as consultas subsequentes nessa réplica, impedindo-as de adquirir seus Sch-S
bloqueios? Nesse caso, pode efetivamente causar uma interrupção da perspectiva do usuário...
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
As leituras subsequentes serão bloqueadas no cenário que você descreveu.
Aqui está o meu teste.
Microsoft SQL Server 2017 (RTM-CU31-GDR) (KB5021126) - 14.0.3460.9 (X64) 25 de janeiro de 2023 08:42:43 Copyright (C) 2017 Microsoft Corporation Enterprise Edition (64 bits) no Windows Server 2016 Standard 10.0 ( Build 14393: ) (Hipervisor)
Uma seleção de execução longa está sendo executada na sessão 55.
Enquanto a instrução select acima está em execução na réplica secundária, emiti esta alteração de esquema na réplica primária.
O encadeamento redo está bloqueado pela sessão 55 porque não pôde adquirir
LCK_M_SCH_M
.Agora estou executando outra instrução select na mesma tabela da sessão 134.
A sessão 134 está bloqueada por 149 devido à não aquisição
LCK_M_SCH_S
.