O DAS oferece dois modos de análise de deadlock para bancos de dados: a análise recente, que examina o log mais atual, e a análise completa, que processa logs de erro a cada hora para acompanhar tendências.
Os dados nas figuras, incluindo IDs de thread e instruções SQL, servem apenas para demonstração. Use seus próprios dados e parâmetros ao executar as operações.
Pré-requisitos
-
A instância de destino deve usar um dos seguintes mecanismos:
-
Análise recente de deadlock:
RDS MySQL
MySQL autogerenciado
PolarDB for MySQL
PolarDB-X 2.0
-
Análise completa de deadlock:
RDS MySQL
PolarDB for MySQL
-
A instância de destino deve estar conectada ao DAS com status de conexão Normal Access. Para mais informações, consulte Connect a database instance to DAS.
-
O Alibaba Cloud Managed Services (anteriormente DAS Economy Edition) deve estar ativado.
ImportanteO Alibaba Cloud Managed Services está disponível apenas em regiões específicas. Para verificar a disponibilidade, consulte Supported databases and regions by edition.
Para ativar esse service, consulte Manage Alibaba Cloud Managed Services.
-
Configuração de parâmetros: o parâmetro
innodb_deadlock_detectdeve estar ativado na instância.NotaEsse parâmetro vem habilitado por padrão. Para verifique, execute
SHOW VARIABLES LIKE 'innodb_deadlock_detect'. Alguns tipos de instância não permitem alterar essa configuração.-
Para modifique os parâmetros da instância:
Para RDS MySQL, consulte Set instance parameters.
Para PolarDB for MySQL, consulte Set cluster and node parameters.
-
Análise de dados: examina o log de deadlock mais recente retornado pelo comando
SHOW ENGINE INNODB STATUS.Faça login no console do DAS.
No painel de navegação à esquerda, clique em Intelligent O&M Center > Instance Monitoring.
Localize a instância de destino e clique em no id da instância para abrir a página de detalhes.
No painel de navegação à esquerda, clique em Lock Analysis. Na página Lock Analysis, selecione a aba Recent Deadlock Analysis.
-
Clique em Create Analysis para iniciar uma análise recente de deadlock.
Após a conclusão da análise, a tabela de resultados na aba Recent Deadlock Analysis exibe o horário de geração, o momento da ocorrência e se houve detecção de deadlock. Clique em View Details para visualize informações detalhadas sobre o deadlock.
Selecione um período para visualize os resultados das tarefas de análise acionadas nesse intervalo.
Na lista de tarefas de análise recente de deadlock, clique em View Details na coluna Details.
-
Um painel é exibido com os detalhes do deadlock em três abas:
View: mostra um gráfico visual da relação de deadlock, incluindo nós de transação e bloqueios de registro. Setas rotuladas como lock granted e waiting ilustram a posse de locks e as relações de espera, formando um ciclo de deadlock. Transações revertidas aparecem marcadas como "Rolled back". Clique em um nó de transação para expandir detalhes como Session id, thread id, tipo de requisição, transaction id, tabela envolvida, informações do lock em espera e nome do índice associado ao lock em espera.
List: exibe uma comparação lado a lado das duas transações em deadlock, com transações revertidas marcadas. As linhas da tabela incluem Session id, thread id, tipo de requisição, transaction id, tabela envolvida, lock aguardado (nome do índice e tipo, como X locks rec but not gap waiting), lock mantido (nome do índice e tipo) e SQL da transação. Use o thread id ou transaction id na parte inferior para pesquisar detalhes relacionados no SQL Explorer and Audit.
Log: mostra o log bruto de deadlock da seção
LATEST DETECTED DEADLOCKda saída do comandoSHOW ENGINE INNODB STATUS, incluindo o horário do deadlock, instruções SQL das transações envolvidas, informações sobre locks mantidos (HOLDS THE LOCK) e locks aguardados (WAITING FOR THIS LOCK TO BE GRANTED).
No painel de navegação à esquerda da instância de destino, clique em SQL Explorer and Audit. Na página Audit, clique em Ative Advanced Query.
-
Selecione um intervalo de tempo que inclua o momento do deadlock e insira o thread id da análise recente para consultar as instruções SQL executadas por essa transação.
Para a Transação 1 do exemplo, os resultados mostram que a thread executou três instruções SQL:
update students set name=UUID() where id = 2(tempo de execução: 2.938,377 ms; tempo de espera por lock: 1 ms),update students set name=UUID() where id = 3(tempo de execução: 0,002 ms) ebegin. O tempo de execução excessivamente longo da primeira instrução update indica espera por lock.Para a Transação 2 (revertida): na página Audit, defina o Time range, configure o Thread id como
195662e clique em Query. A lista de logs exibe o registro de execução SQL da Transação 2:update students set name=UUID() where id = 3falhou com código de erro 1213 (deadlock) e levou 1,40 ms, com tempo de espera por lock de 1,152 ms. A instruçãoupdate students set name=UUID() where id = 2foi bem-sucedida e levou 0,20 ms. O comandobeginfoi bem-sucedido e levou 0,18 ms.
-
Ative os parâmetros
innodb_deadlock_detecteinnodb_print_all_deadlocks. Para instâncias RDS MySQL, defina também o parâmetrolog_error_verbositycomo 3.NotaO parâmetro
innodb_deadlock_detectvem habilitado por padrão. ExecuteSHOW VARIABLES LIKE 'innodb_deadlock_detect'para verifique. Alguns tipos de instância não permitem alterar essa configuração.-
Para modifique os parâmetros da instância:
Para RDS MySQL, consulte Set instance parameters.
Para PolarDB for MySQL, consulte Set cluster and node parameters.
-
Source de dados: o DAS processa as informações de deadlock do log de erros da instância a cada hora para gerar tendências de contagem e compilar os detalhes de cada deadlock.
-
Período de resfriamento: se o Alibaba Cloud Managed Services estiver ativado e o DAS detectar que os parâmetros necessários não estão habilitados, o sistema entra em um período de resfriamento de 12 horas e não executa tarefas de análise. Se você ativar os parâmetros necessários durante o período de resfriamento, o DAS aguardará o término desse período antes de reagendar a análise. Por exemplo:
Uma tarefa de análise às 11:12 detecta que um parâmetro necessário não está habilitado e inicia um resfriamento de 12 horas. Após as 23:12, a análise completa de deadlock reagendará a tarefa. Se o parâmetro ainda não estiver habilitado, outro resfriamento de 12 horas começará. Se você habilitar o parâmetro antes das 23:12, o resfriamento terminará às 23:12. Depois disso, a análise será executada a cada hora, desde que o parâmetro necessário e o Alibaba Cloud Managed Services permaneçam ativados para a instância.
Faça login no console do DAS.
No painel de navegação à esquerda, clique em Intelligent O&M Center > Instance Monitoring.
Localize a instância de destino e clique em no id da instância para abrir a página de detalhes.
No painel de navegação à esquerda, clique em Lock Analysis. Na página Lock Analysis, selecione a aba Full Deadlock Analysis.
-
A cada hora, a análise completa de deadlock processa automaticamente os logs de erros da instância, conta os deadlocks e plota os dados no gráfico Deadlock Trend na parte superior da página. Selecione um período para visualize a tendência de deadlock correspondente.
A parte superior da página oferece botões de seleção rápida para Last 1 Day, Last 3 Days e Last 7 Days, além de um seletor personalizado de datas. Clique em no botão View para atualize o gráfico de tendências. Abaixo do gráfico, há uma lista de eventos de deadlock que mostra o Deadlock Time de cada um. Clique em View Details em um evento específico para obter mais informações.
Na lista de deadlocks da análise completa, clique em View Details na coluna Details.
Um painel é exibido com os detalhes do deadlock em três abas: View, List e Log. A aba Log contém o conteúdo do log de erros relacionado ao deadlock. As abas View e List são iguais às da análise recente de deadlock. Para mais informações, consulte Recent deadlock analysis - View details.
Análise recente de deadlock
Se ocorrerem múltiplos deadlocks, apenas o mais recente será capturado e salvo por análise.
Procedimento
Visualizar detalhes
Analisar com SQL Explorer and Audit
Análise completa de deadlock
Não há suporte para análise de deadlocks que incluam a mensagem "TOO DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH, WE WILL ROLL BACK FOLLOWING TRANSACTION".
Procedimento
Visualizar detalhes
Analisar com SQL Explorer and Audit
O procedimento é o mesmo da análise recente de deadlock. Para mais informações, consulte Recent deadlock analysis - Analyze with SQL Explorer and Audit.