Sessões bloqueadas aguardando com PAGELATCH_ * tipos de espera?

9

Editado: por que os relatórios de sessões estão sendo bloqueados, mas aguardando PAGELATCH_*e não LCK_M_relacionados a tipos de espera?

Eu supus anteriormente que o SQL Server reportaria apenas sessões de bloqueio na coluna blocking_session_Id. Se as sessões bloqueadas estavam aguardando um bloqueio lógico e não qualquer outra coisa, como a PAGELATCH_*.

insira a descrição da imagem aqui

Pixelated
fonte
Parece que muitas sessões simultâneas estão inserindo dados na tabela. Você pode postar a estrutura da tabela junto com os índices?
Kin Shah
@Kin a tabela começa a ser inserida pelos SPIDs 69, 82 e 84 tem um índice clusterizado definido com uma propriedade IDENTITY (1,1), portanto pode ser um caso de contenção de inserção de última página, mas, neste estágio, estou mais interessado em por que as sessões bloqueadas estão aguardando com um tipo de espera relacionado sem bloqueio. Também curiosamente, SPID 93 está a tentar pôr XLOCK sobre uma mesa totalmente alheios à tabela que está sendo selecionado a partir de 64.
Pixelated

Respostas:

6

Eu supus anteriormente que o SQL Server reportaria apenas uma sessão de bloqueio na coluna blocking_session_id, se as sessões bloqueadas estivessem aguardando um bloqueio lógico e não qualquer outra coisa como a PAGELATCH_*.

Você está usando o sp_WhoIsActiveprocedimento de Adam Machanic , não um recurso interno do SQL Server. O procedimento de Adam relata todas as causas 'interessantes' de bloqueio, não apenas o bloqueio. As informações subjacentes vêm de várias fontes, incluindo sysprocesses , sys.dm_exec_requests e sys.dm_os_waiting_tasks .

Uma tarefa pode esperar por outras coisas além de um bloqueio. Por exemplo, pode ser possível adquirir um bloqueio exclusivo em uma linha de uma página, mas ainda é necessário aguardar para obter uma trava de página exclusiva (porque outras tarefas travaram a mesma página em um modo incompatível).

No seu exemplo, as PAGELATCH_EXtravas de páginas exclusivas estão em páginas regulares de dados ou de índice, não em páginas PFS, GAM, SGAM, DCM ou BCM, conforme indicado por (*) no final do wait_info .

Você pode encontrar a documentação (entradas do blog) sp_WhoIsActive aqui .

Paul White 9
fonte