Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 2617|Resposta: 2

[Gorjetas] O SQL Server usa eventos estendidos para acompanhar problemas de deadlock

[Copiar link]
Publicado em 02/03/2024 19:13:04 | | | |
Requisitos: Existem muitas razões pelas quais o banco de dados SQL Server causa bloqueios; em produção, todos podem enfrentar problemas de bloqueio, e a causa específica pode não ser localizada apenas com base nas informações anormais dos bloqueios de aplicação, por isso é necessário usar eventos de extensão no SQL Server para rastrear problemas de bloqueio e registrar os detalhes específicos de quando eles ocorrem.

Visão geral do evento estendido

Extended Events é um recurso leve de monitoramento de desempenho que permite aos usuários coletar os dados necessários para monitorar e resolver problemas. Esse recurso permite que você visualize detalhes sobre as operações internas do motor de dados para monitoramento de desempenho e resolução de problemas.

Com a arquitetura de Eventos Estendidos (XEvents), os usuários podem usar tanto ou tão poucos dados quanto precisarem para monitorar, identificar ou solucionar problemas do desempenho do SQL Server, Azure SQL Database e Azure SQL Managed Instance. Eventos estendidos são altamente configuráveis, leves e escaláveis bem.

Referência:
O login do hiperlink está visível.
O login do hiperlink está visível.


Causas dos impasses

Bloqueios são causados por bloqueios de concorrência concorrentes em um banco de dados, geralmente em transações em múltiplas etapas. Cada sessão de usuário pode ter uma ou mais tarefas rodando em seu nome, onde cada tarefa pode buscar ou esperar para buscar vários recursos. Os seguintes tipos de recursos podem causar bloqueios e, eventualmente, causar um impasse.

  • Bloqueios: Bloqueios esperando para buscar recursos como objetos, páginas, linhas, metadados e aplicações podem causar bloqueios. Por exemplo, a transação T1 tem um bloqueio compartilhado (bloqueio S) na linha r1 e espera obter um bloqueio exclusivo (bloqueio X) para a linha r2. A transação T2 tem um bloqueio compartilhado (bloqueio S) na linha r2 e espera obter um bloqueio exclusivo (bloqueio X) para a linha r1. Isso resulta em um loop de bloqueio onde tanto T1 quanto T2 esperam um ao outro liberar o recurso travado.
  • Threads de trabalho: Tarefas que fazem fila para threads de trabalho disponíveis podem causar bloqueios. Se uma tarefa em fila tiver um recurso que bloqueia todas as threads de trabalhadores, isso resultará em um bloqueio. Por exemplo, após a sessão S1 iniciar uma transação e adquirir um bloqueio compartilhado (S-lock) para a linha r1, ela entra em modo de suspensão. Uma sessão ativa rodando em todos os threads de trabalho disponíveis está tentando obter um lock exclusivo (X-lock) para a linha r1. Como a sessão S1 não consegue obter uma thread de trabalho, ela não pode comprometer a transação e liberar o lock na linha r1. Isso resultará em um impasse.
  • Memória: Um deadlock pode ocorrer quando uma requisição concorrente espera para obter memória e a memória disponível atualmente não é suficiente para suas necessidades. Por exemplo, duas consultas concorrentes (Q1 e Q2) são executadas como funções definidas pelo usuário, adquirindo 10 MB e 20 MB de memória, respectivamente. Se cada consulta requer 30 MB e a memória total disponível for de 20 MB, Q1 e Q2 devem esperar um ao outro liberar memória, o que resultará em um deadlock.
  • Recursos relacionados à consulta paralela e execução: Coordenadores de processamento, geradores ou threads de consumo tipicamente associados a portas comutadas podem bloquear uns aos outros quando contêm pelo menos um processo que não faz parte de uma consulta paralela, resultando em bloqueios. Além disso, quando uma consulta paralela inicia a execução, o SQL Server determina o grau de paralelismo ou número de threads de trabalho com base na carga de trabalho atual. Um deadlock pode ocorrer se houver uma mudança inesperada na carga de trabalho do sistema, por exemplo, quando uma nova consulta começa a ser executada no servidor ou quando o sistema fica sem threads de trabalho.
  • Recursos do Conjunto de Resultados de Múltiplas Atividades (MARS): Esses recursos são usados para controlar a execução cruzada de múltiplas solicitações de atividade sob o MARS.


Referência:
O login do hiperlink está visível.

Registro estendido de eventos por deadlock

Crie um evento de extensão para registrar as informações do deadlock com o seguinte comando:


Iniciar uma sessão de evento de bloqueio

Interrompa uma sessão de evento

Exclua uma sessão de evento

Consultar dados de sessão de eventos


Impasses de teste

Crie uma nova tabela Tab1 para testes, crie duas novas janelas de execução e execute os seguintes comandos, respectivamente:

Um impasse ocorre da seguinte forma:

Uma transação (ID de processo 68) com outro processo está travada em um recurso travado e foi selecionada como vítima de bloqueio. Por favor, refaça a transação.
A transação (ID do processo 68) estava bloqueada nos recursos do bloqueio com outro processo e foi escolhida como vítima do bloqueio. Repita a transação.


Veja os dados da sessão do evento conforme mostrado na figura a seguir:



Os dados XML detalhados são os seguintes:


(Fim)





Anterior:Otimização de desempenho .NET/C# usando consulta paralela PLINQ
Próximo:Execução de código no Visual Studio usando a janela interativa de C#
 Senhorio| Publicado em 02/03/2024 19:14:35 |
Estenda o caminho padrão do arquivo de eventos:

C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\deadlock_monitor_0_133538477770860000.xel
 Senhorio| Publicado em 02/03/2024 19:16:54 |
Crie uma nova tabela tab1 para testar o script SQL

Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com