Diagnóstico de Deadlocks e Contenção de Locks
Reconstrua o ciclo de locks a partir do deadlock graph e corrija a ordem ou o índice por trás dele.
Por Os Melhores Prompts
Categoria: Bancos de dados
O que ele faz
Reconstrói a ordem exata de aquisição de locks de cada participante a partir da evidência do próprio engine — deadlock XML e extended events do SQL Server, log de deadlock detected do Postgres com detalhe de processo, LATEST DETECTED DEADLOCK do InnoDB, trace files do Oracle — nomeando o recurso e o modo de lock, não apenas o comando. Separa deadlock de lock wait timeout, de cadeia de bloqueio e de lock escalation, e procura gap locks ou next-key locks tomados em linhas que a query nunca retornou, casos em que a causa real é um índice faltando e um retry loop não é correção.
Use quando
- Um deadlock que reaparece no mesmo horário todos os dias
- Deadlocks no InnoDB entre comandos que parecem não se cruzar
- Cadeias de bloqueio reportadas como deadlock
- Código de ORM em que a ordem de lock muda conforme o caminho
- Decidir se um retry loop é aceitável nesse caso
O que você recebe
- O ciclo de locks na ordem de aquisição, com modos e pedidos
- Classificação: ordenação, gap lock, escalation, FK ou upgrade
- A linha de cada transação em que a ordem de acesso diverge
- Correções ranqueadas: ordem de lock, CREATE INDEX exato, isolamento
- Métrica de taxa de deadlock, alvo e como reproduzir sob carga
Como usar
- Cole a evidência bruta em {{deadlock_evidence}} — deadlock graph XML, a seção de deadlock do SHOW ENGINE INNODB STATUS ou a entrada de log do Postgres com detalhe de processo — e não um resumo, porque resumos removem os modos de lock e os nomes de índice que identificam gap lock.
- Coloque todos os comandos em ordem, os limites da transação, hints de lock e onde a aplicação faz commit em {{transaction_code}}, e diga se há alguma chamada de rede com a transação aberta.
- Preencha {{schema_and_indexes}} com DDL, índices, contagem de linhas e seletividade dos predicados das tabelas envolvidas.
- Informe em {{database_engine}} o engine, a versão e o nível de isolamento padrão, e em {{workload_pattern}} a concorrência, jobs em lote sobrepostos ao OLTP, comportamento de retry, ORM e tamanho do pool.
- Aplique as correções na ordem dada — ordem de lock e índice antes de qualquer mudança de isolamento — e acompanhe a taxa de deadlock contra o alvo indicado.
Tags: deadlock, locking, concurrency, sqlserver, postgres, innodb, isolation-levels
Preço: 10.00 BRL