O bloqueio do SQL Server em um banco de dados ocorre quando uma transação mantém um bloqueio em um recurso e impede que uma ou mais conexões operem nesse mesmo recurso. A segunda conexão deve aguardar a liberação do bloqueio antes de continuar. Isso é feito para garantir o componente de isolamento do ACID – o que significa que as transações simultâneas não são visíveis umas às outras até que sejam concluídas. O bloqueio no SQL Server pode causar estragos no desempenho em qualquer ambiente.
Uma das tarefas que os administradores de banco de dados realizam é identificar a consulta que está bloqueando, corrigi-la e, em seguida, dar um passo adiante para determinar a causa raiz. Pesquisar a causa raiz, especialmente após o fato, pode ser uma tarefa muito difícil. Para a maioria, isso significa um processo muito demorado de enraizamento por meio de exibições de gerenciamento dinâmico do SQL Server, como s ys.dm_exec_requests ou executando procedimentos do sistema como sp_who2 para descobrir detalhes dos IDs de processo do sistema (SPIDS) envolvidos no blockchain. O Spotlight Cloud pode reduzir bastante seus esforços para identificar esses eventos de bloqueio.
Usando o monitoramento de banco de dados para identificar blocos do SQL Server
|
Figura 1:painel de visão geral |
Começando no painel Visão geral, o Spotlight Cloud fornece uma visão clara de todo o ambiente. Ele mostra métricas, incluindo contagens de sessões, processos, uso de memória, consumo de discos e esperas de relance. Mais importante, mostra claramente a atividade de bloqueio; no centro da Figura 1, você pode ver claramente que existem atualmente dois processos bloqueados.
Para um DBA, entrar nos detalhes é necessário para resolver problemas de bloqueio. O Spotlight Cloud nos dá a capacidade de detalhar mais a sessão simplesmente escolhendo o menu suspenso em Visão geral, conforme mostrado na Figura 2.
Figura 2:lista suspensa da visão geral |
O Spotlight Cloud permite que você veja facilmente quais sessões estão bloqueadas e quais declarações estão envolvidas. Na Figura 3, você pode ver que os SPID 59 e 65 estão bloqueados (indicados em destaque laranja ao redor do status), o que corresponde à contagem bloqueada. Você também notará que o Spotlight Cloud continua a fornecer detalhes resumidos sobre o estado atual da instância, permitindo que fiquemos de olho em contadores importantes enquanto analisamos problemas de desempenho.
Usando o Spotlight Cloud SQL Server Monitoring para resolver problemas de bloqueio
|
Figura 3:painel de sessões |
O painel Sessões (como visto na Figura 3) nos fornece informações vitais de que precisamos para resolver o problema. Aqui você pode encontrar informações importantes como qual usuário está executando as instruções, qual banco de dados é afetado e quando a sessão foi declarada. A profundidade de detalhes fornecida é uma economia de tempo real para os DBAs que precisam de respostas rápidas para o que está causando o bloqueio, para que possam resolvê-lo. Você não apenas vê que tem duas transições bloqueadas, mas também podemos ver que ambas são instruções UPDATE na mesma tabela sendo executadas pela conta de serviços de rede no banco de dados de vendas. A declaração real é mostrada no canto inferior direito. Por fim, podemos ver o SPID ativo e o SPID pelo qual ele está sendo bloqueado.
No canto superior direito da Figura 3, em texto azul, o Spotlight Cloud informa para onde ir em sua investigação. O produto dentro de cada camada fornece um caminho claro sobre como mergulhar ainda mais fundo. Clicar no link Investigate in Workload Analyzer permite ver o SPID 61 invocado, que é um bloqueador de lead para o SPID 65.
|
Figura 4:Workload Analyzer (é aqui que queremos expandir as sessões bloqueadas) |
O Workload Analyzer oferece uma dimensão de detalhamento que permite direcionar para recursos específicos, como bloqueio. Na Figura 4, você pode ver como nos aprofundamos clicando nas duas setas de expansão no canto da seção Blocked Sessions.
Figura 5:detalhe das sessões bloqueadas |
Agora que você conhece o banco de dados envolvido, você pode cavar um pouco mais. Na navegação à esquerda, você pode detalhar o banco de dados de vendas. Aqui você pode ver SPID 61 e 64 incluindo o status atual. Esses dois IDs de processo do sistema estão bloqueando e observe que o SPID 59 agora também está bloqueado pelo SPID 64. Essa exibição ajuda a garantir que você possa ficar à frente do bloqueio enquanto continua a investigar.
Na metade inferior da Figura 5, você pode ver no Mapeamento de Sessão Bloqueada que ele informa os detalhes do SPID 61, que neste caso é nosso principal bloqueador. O culpado é, na verdade, parte de um SQL Agent Job que está sendo executado, o que faz sentido com base no usuário que encontramos executando a instrução. Se você se lembrar, era a conta do serviço de rede, NT AUTHORITY\NETWORK SERVICE. Nesta instância, o SQL Agent Service está sendo executado sob esse conjunto específico de credenciais.
O próximo passo é descobrir quais trabalhos estão sendo executados e ver se você pode eliminar o trabalho para interromper o bloqueio. Normalmente, você iria ao SQL Server Management Studio para revisar o SQL Agent e examinar os trabalhos, mas o Spotlight facilita isso e também oferece uma visão abrangente dos trabalhos. Você pode encontrar isso clicando na seta ao lado das palavras “Workload Analyzer” na parte superior, assim como você fez quando navegou de Visão geral para Sessões.
Figura 6:menu suspenso do Workload Analyzer |
Evitando futuros bloqueios do SQL Server
Pesquisar o bloqueio leva tempo e, às vezes, enquanto pesquisamos um problema específico, o bloqueio se resolve sozinho. Nesse caso, o trabalho em execução foi concluído e as atualizações bloqueadas puderam ser executadas. Embora o problema imediato não exista mais, você ainda precisa continuar cavando a causa raiz para garantir que possa evitá-lo no futuro.
Como você já identificou o SPID 61 como o trabalho que estava em execução e como o tempo passou, você precisará agora olhar o histórico. Para revisar o histórico, basta alterar o intervalo de datas exibido para o intervalo de tempo do bloqueio ativo. Na Figura 7, você pode ver o intervalo de datas no canto direito, você pode clicar no menu suspenso e ajustar os horários de acordo. Em seguida, você deseja procurar o SPID 61 usando a funcionalidade de pesquisa. Cada ambiente é diferente, então o que você faz com essas informações agora dependerá. Se você ajustar o tempo do trabalho, fazer algumas alterações nos índices, código ou configurações, será inteiramente por sua conta.
Figura 7 Tarefas |
Figura 8:Blocos de corrida longa |
Alguns bloqueios vêm e vão tão rapidamente que não têm efeito significativo no desempenho. Quando eles ficam por mais tempo, precisamos saber sobre isso rápido. O Spotlight Cloud possui um alarme de “bloqueio de longa duração” que notifica o usuário de bloqueios que não estão desaparecendo.
Figura 9:dimensão do objeto bloqueado |
O bloqueio é um sintoma de alguns problemas maiores e muitas vezes são necessárias perspectivas diferentes para chegar à causa raiz. A dimensão do objeto bloqueado no analisador de carga de trabalho do Spotlight Cloud permite que o usuário verifique rapidamente os objetos que estão gerando a maior atividade de bloqueio para uma determinada instância.
Identificar o bloqueio e investigar a causa é a parte mais difícil para os DBAs. O Spotlight Cloud Professional nos permite obter essas informações de forma rápida e eficiente. Quando o tempo resolve o problema ativo, o Spotlight Cloud nos permite continuar investigando para chegar à causa raiz e, por fim, nos fornece as informações necessárias para tomar decisões informadas sobre como evitar ocorrências futuras.
Quer ver o Spotlight Cloud em ação? Comece sua avaliação gratuita de 30 dias hoje.