Ao rodar sp_whoisactive
em um servidor pela primeira vez, fui recebido por algo inesperado:
Duas sessões estavam em andamento há 13 dias, mas ambas pareciam estar bloqueando uma à outra. Dando uma olhada em sys.dm_tran_locks
:
O valor de configuração para a definição de limite de processo bloqueado é de 10 segundos. Outros deadlocks estão sendo resolvidos com sucesso no servidor por meio do monitor de deadlock.
Informações do @get_locks
parâmetro:
<Database name="DB1">
<Locks>
<Lock request_mode="S" request_status="GRANT" request_count="1" />
</Locks>
<Objects>
<Object name="TBL1" schema_name="dbo">
<Locks>
<Lock resource_type="OBJECT" request_mode="IX" request_status="GRANT" request_count="1" />
<Lock resource_type="PAGE" page_type="*" index_name="PK__TBL1__3214EC27326C5B6A" request_mode="U" request_status="GRANT" request_count="1" />
<Lock resource_type="PAGE" page_type="*" index_name="PK__TBL1__3214EC27326C5B6A" request_mode="U" request_status="WAIT" request_count="1" />
</Locks>
</Object>
</Objects>
</Database>
<Database name="DB1">
<Locks>
<Lock request_mode="S" request_status="GRANT" request_count="1" />
</Locks>
<Objects>
<Object name="TBL2" schema_name="dbo">
<Locks>
<Lock resource_type="OBJECT" request_mode="Sch-S" request_status="GRANT" request_count="2" />
</Locks>
</Object>
<Object name="TBL1" schema_name="dbo">
<Locks>
<Lock resource_type="OBJECT" request_mode="IX" request_status="GRANT" request_count="5" />
<Lock resource_type="PAGE" page_type="*" index_name="PK__TBL1__3214EC27326C5B6A" request_mode="U" request_status="GRANT" request_count="33701" />
<Lock resource_type="PAGE" page_type="*" index_name="PK__TBL1__3214EC27326C5B6A" request_mode="U" request_status="WAIT" request_count="1" />
</Locks>
</Object>
</Objects>
</Database>
Eu ocasionalmente vi o termo "impasse não detectado", mas não tenho nenhuma experiência direta com eles. Minhas perguntas são:
- Isso poderia ser um exemplo de um impasse não detectado? Não consigo ver como a situação é resolvida sem a intervenção do thread do monitor de deadlock, mas por algum motivo isso ainda não aconteceu.
- Há algo a fazer além de atualizar para a CU mais recente e esperar que o problema não ocorra novamente? O servidor está atualmente em 2017 CU10 que eu sei que está um pouco desatualizado.
De um comentário deixado por David Browne - Microsoft