A consulta SELECT requer um bloqueio SCH-S. Isso pode ser compartilhado com outras consultas de leitura.
A consulta UPDATE requer um bloqueio SCH-M. Isso não pode ser compartilhado com outras consultas de leitura/atualização.
O exemplo mostra um bloqueio de reorganização de índice (Sch-S) bloqueia o bloqueio Sch-M da atualização de estatísticas. Mas por que ele também bloqueia o bloqueio Sch-S subsequente solicitado pela consulta SELECT? Os bloqueios Sch-S não são compartilhados?
Como Charlieface aponta, é uma cadeia sequencial de bloqueio que está ocorrendo.
SCH-S
eSCH-M
são tipos de bloqueio incompatíveis entre si. Você pode usar a seguinte matriz de compatibilidade de bloqueio dos documentos para ver o que é compatível:No exemplo que você forneceu das dicas do MS SQL, há uma
ALTER INDEX
SCH-S
consulta de bloqueio que está bloqueando umaUPDATE STATISTICS
consulta que usa umSCH-M
bloqueio. E então essaUPDATE STATISTICS
consulta está bloqueando uma terceira consulta (aSELECT
) que usa umSCH-S
bloqueio. Portanto,SCH-S
blocksSCH-M
blocksSCH-S
é a cadeia de bloqueio aqui, porque são tipos de bloqueio incompatíveis em ambas as direções.