O Database Autonomy Service (DAS) oferece o recurso Lock Optimization para o ApsaraDB RDS for SQL Server. Use esse recurso para visualizar deadlocks e seus detalhes na instância de banco de dados.
Pré-requisitos
Instâncias do ApsaraDB RDS for SQL Server 2008 R2 com discos em nuvem não oferecem suporte a este recurso.
-
A instância deve estar em uma das seguintes regiões:
China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Hohhot), China (Ulanqab), China (Shenzhen), China (Heyuan), China (Guangzhou), China (Chengdu), China (Hong Kong), Singapura e Emirados Árabes Unidos (Dubai).
Informações básicas
Ao modificar um recurso, a transação aplica um bloqueio para impedir alterações por outras transações e garantir a consistência dos dados.
Deadlocks geralmente ocorrem quando várias transações competem pelos mesmos recursos. Por exemplo, a Transação A bloqueia o Recurso A e tenta modificar o Recurso B, enquanto a Transação B bloqueia o Recurso B e tenta modificar o Recurso A. Essa dependência circular gera um deadlock, pois cada transação aguarda a liberação do bloqueio pela outra. O sistema encerra automaticamente a sessão com menor custo de reversão (sessão vítima) e causa a falha da tarefa correspondente. A figura a seguir ilustra esse cenário.

Tipos de deadlock
A página Deadlock exibe estatísticas dos seguintes cinco tipos de deadlock:
KeyDeadlock
ObjectDeadlock
RIDDeadlock
PageDeadlock
CompileDeadlock
Modos de bloqueio
Ao acessar um recurso, a transação utiliza diferentes modos de bloqueio (LockMode) conforme o tipo de acesso. Os modos incluem:
Bloqueio compartilhado (S): Permite a leitura do recurso, mas impede modificações enquanto o bloqueio estiver ativo.
Bloqueio de atualização (U): Impede que outras transações adquiram um bloqueio exclusivo sobre um recurso e sinaliza a intenção de modificá-lo. Esse bloqueio evita deadlocks que podem ocorrer quando várias sessões tentam ler, bloquear e atualizar o mesmo recurso.
Bloqueio exclusivo (X): Impede o acesso de outras transações ao recurso.
Procedimento
Faça login no console do DAS.
No painel de navegação à esquerda, clique em .
Localize a instância desejada e clique em ID da instância para abrir a página de detalhes.
No painel de navegação à esquerda, clique em Lock Optimization > DeadLock.
Na página DeadLock, verifique os detalhes do deadlock.
Visão geral da página
A seção Deadlock Count Overview apresenta estatísticas para intervalos de tempo predefinidos, incluindo Last 24 Hours, Last 7 Days, Last 14 Days e Last Month.
-
Deadlock Trend

Este gráfico mostra os tipos de deadlocks ocorridos em um determinado período. Execute as seguintes operações:
-
Selecione um Start time e um End time e clique em Search para exibir informações de deadlock no intervalo especificado.
NotaO intervalo de tempo não pode ultrapassar 30 dias.
Clique em Last 24 Hours, Last 7 Days ou Last Month para consultar rapidamente as informações de deadlock do período selecionado.
Passe o mouse sobre um ponto no gráfico de tendências para visualizar os tipos e a quantidade de deadlocks ocorridos naquele momento.
Clique em ícone
no canto superior direito do gráfico de tendências para alterar o estilo de exibição ou baixe o gráfico.
-
-
Deadlock Details
Clique em ícone
à esquerda de um registro para expandi-lo e visualizar os detalhes das sessões interdependentes. Os detalhes incluem as seguintes informações:LastTranStarted: Horário de início da transação.
SPID: ID da sessão que iniciou a transação.
-
IsVictim: Indica se a sessão foi a vítima do deadlock.
NotaO SQL Server resolve deadlocks por meio de uma thread interna de detecção periódica. Após detectar um deadlock, o SQL Server encerra a sessão com menor custo de reversão entre as envolvidas. Por exemplo, como uma instrução SELECT geralmente custa menos que uma UPDATE, o SQL Server prioriza o encerramento da sessão que executa a instrução SELECT.
LogUsed: Tamanho do log gerado pela sessão. Unidade: bytes.
LockMode: Modo de bloqueio. Para mais informações, consulte Modos de bloqueio.
WaitResourceDesc: Descrição do recurso aguardado pela transação atual.
ObjectOwned: Objeto bloqueado por esta sessão.
ObjectRequested: Objeto que a sessão tenta bloquear.
WaitResource: Recurso aguardado pela transação.
HostName: Nome do host do cliente que iniciou a transação.
LoginName: Nome da conta usada na transação.
Status: Status atual da transação.
ClientApp: Nome do aplicativo cliente usado na transação.
-
SQLText: Detalhes da instrução SQL.
NotaClique em instrução SQL para abri-la em uma nova janela. Clique em Click to Copy para copiar a instrução e usá-la em troubleshooting ou análises.
Clique em qualquer linha para exibir o diagrama de deadlock correspondente abaixo.
-
Deadlock Diagram

Este diagrama mostra a relação entre as sessões envolvidas no deadlock e fornece detalhes sobre os recursos bloqueados. Clique em Download para baixe um arquivo XDL. Esse arquivo contém todos os detalhes do deadlock atual e pode ser aberto com o cliente SQL Server Management Studio (SSMS).