Esta página foi traduzida por máquina. Leia o original em inglês. English

FBMonLogger agora faz parte do HQbird Standard!

FBMonLogger é uma ferramenta para analisar a saída das tabelas de monitoramento no Firebird e encontrar problemas com consultas SQL lentas, transações mal projetadas (transações de longa duração, transações com nível de isolamento incorreto, etc.) e identificar aplicativos problemáticos.

O FBMonLogger pode se conectar a um banco de dados Firebird com problemas de desempenho e identificar qual é o motivo da lentidão: é algum anexo de usuário, consulta SQL lenta ou transação de longa duração?

FBMonLogger suporta Firebird 2.1, 2.5 e 3.0 - para versões mais antigas do Firebird ou InterBase, use o FBScanner.

O FBMonLogger pode mostrar a você:

  • Principais anexos com o maior número de operações de E/S, leituras não indexadas e indexadas
  • Principais instruções SQL com o maior número de operações de E/S, leituras não indexadas e indexadas
  • Transações problemáticas: transações de longa duração, transações com nível de isolamento incorreto, transações de leitura/gravação e informações relacionadas: quando foram iniciadas, quais aplicativos iniciaram essas transações, de qual endereço IP, etc.
  • Anexos e instruções com as ações de coleta de lixo mais intensivas
  • Proporção de leitura/gravação, proporção de INSERTS/UPDATE/DELETE e muito mais.

Após a conexão ao banco de dados onde você deseja encontrar problemas de desempenho, várias capturas das tabelas de monitoramento devem ser feitas - clique em «Obter Captura» para tirar uma captura.

Estatísticas de desempenho agregadas para anexos de usuários

FBMonLogger

Na primeira tela, podemos ver estatísticas agregadas para conexões de banco de dados e identificar conexões com os maiores problemas:

Leituras sequenciais / Leituras indexadas

“Leituras sequenciais / Leituras indexadas” mostra a proporção total entre leituras sequenciais (não indexadas) e leituras indexadas no aplicativo. Normalmente, o número de leituras não indexadas deve ser baixo, então uma grande porcentagem de leituras sequenciais é um sinal de que muitas consultas SQL têm planos de execução NATURAL, e elas podem ser um motivo para o tempo de resposta lento.

Clique no registro em «PRINCIPAIS anexos: leituras sequenciais/indexadas» para ir até a aba «Anexos», onde você pode ver mais detalhes sobre o anexo e, em seguida, saltar para as abas «Transações» ou «Instruções», onde você verá transações e anexos vinculados ao anexo selecionado (se a marcação «Vincular ao anexo selecionado» estiver ativada; caso contrário, todas as transações/instruções para todos os anexos serão mostradas).

Detalhes de gravação

«Detalhes de gravação» fornece uma visão geral das operações de gravação: proporção entre INSERTs/UPDATEs/DELETEs entre todos os anexos do banco de dados. Na tabela dos principais gravadores, você pode ver anexos com o maior número de operações de gravação. É útil para identificar aplicativos ou módulos de software que realizam um número excessivo de updates ou deletes (que são as operações mais perigosas em termos de coleta de lixo).

Detalhes da coleta de lixo

O que significam as operações de coleta de lixo?

  • Purge - o mecanismo remove versões anteriores, apenas a versão primária permanece no banco de dados.
  • Expunge - tanto a versão primária quanto todas as versões anteriores foram excluídas.
  • Backout - remove apenas a versão primária (devido a rollback).

Normalmente, podemos associar purge com operação UPDATE, Expunge com DELETE e Backout com rollback de INSERT ou UPDATE. Muitos backouts podem significar que há um problema com o gerenciamento de transações no aplicativo.

Uso de memória

O gráfico «Uso de memória» mostra o total de memória usada por todos os anexos ativos agora e o pico de memória alocada para eles no passado.

A lista dos principais anexos por uso de memória mostra os maiores consumidores de memória entre seus anexos. É útil para encontrar aplicativos ou módulos de software com uso excessivo de memória.

Estatísticas de desempenho agregadas para instruções

FBMonLogger

Na segunda aba, você pode encontrar estatísticas de desempenho agregadas para instruções. Essas estatísticas refletem melhor a situação momentânea no banco de dados - como as tabelas de monitoramento coletam informações desde o início da vida de cada objeto, as instruções que você vê aqui são aquelas que estavam em execução no momento em que a captura foi feita.

Leituras sequenciais / Leituras indexadas

Nesta lista, podemos ver as principais instruções que realizam muitas leituras sequenciais do banco de dados. Normalmente, essas instruções exigem ajuste de SQL - seja por meio de ajuste de índices ou redesenho da consulta SQL.

Para ajustar a consulta, verifique seu plano de execução: geralmente é possível melhorar a velocidade da consulta eliminando NATURAL nos planos com novos índices ou redesenho da consulta. Clique na instrução nesta lista para abrir a aba «Instruções», onde você pode encontrar mais detalhes sobre a instrução selecionada e saltar para a transação ou anexo associado.

Leituras de página/gravações de página

Este gráfico e lista mostram informações breves sobre as principais instruções que realizam muitas leituras - isso significa que elas consomem E/S significativa e podem afetar o desempenho de outras consultas. Instruções SQL com valores de pico devem ser cuidadosamente verificadas quanto ao desempenho ideal.

Detalhes de gravação para instruções

Neste gráfico, você pode ver o que as instruções SQL de gravação estavam fazendo no momento em que a captura das tabelas de monitoramento foi feita e identificar UPDATES e DELETEs que fizeram muitas alterações no banco de dados.

Detalhes da coleta de lixo para instruções

Neste gráfico, podemos ver quantas operações de coleta de lixo foram feitas pelas instruções em execução no momento da captura.

Uso de memória para instruções

Ao contrário das estatísticas agregadas de uso de memória para anexos, o uso de memória das instruções pode nos mostrar uma lista de instruções exatas que consomem muita memória no momento.

Anexos

FBMonLogger

A terceira aba é «Anexos». Você pode abrir esta aba diretamente para saltar até ela clicando em um dos registros em «Estatísticas de desempenho agregadas».

Anexos mostra a lista de usuários conectados ao banco de dados Firebird, com muitos detalhes úteis: USUÁRIO e PAPEL do anexo, hora de início e ID do anexo, se a coleta de lixo está habilitada para o anexo, nome do processo remoto que estabeleceu o anexo e vários contadores de desempenho acumulados para o anexo: número de leituras sequenciais [feitas pelo anexo desde seu início], número de leituras indexadas, número de inserts, updates e deletes, bem como registros de backouts, purges e expunges.

Por padrão, algumas colunas do anexo estão desativadas para mostrar apenas as informações mais importantes.

Claro, toda vez que você clicar em um anexo, pode saltar para as transações em execução dentro dele e, em seguida, para as instruções. Há uma caixa de seleção no canto superior esquerdo das abas Transações e Instruções que controla o comportamento - quando marcada, apenas transações e instruções marcadas pelo ID do anexo selecionado serão mostradas.

Transações

FBMonLogger

A aba «Transações» mostra transações ativas no momento em que a captura foi feita. Se a caixa de seleção «Vincular ao anexo selecionado» estiver habilitada, apenas transações para o anexo selecionado serão mostradas; caso contrário, todas as transações são mostradas.

Uma das características mais importantes é o tempo de vida das transações: como o Firebird é projetado para trabalhar com transações curtas de gravação, é importante mantê-las o mais curtas possível. O FBMonLogger destaca transações com modos de isolamento e configurações de leitura-gravação que seguram a Transação Ativa Mais Antiga e, portanto, provocam que versões excessivas de registros não sejam limpas. Se você vir tal transação e ela foi iniciada há algum tempo, isso significa que ela pode ser responsável por versões excessivas de registros.

Classifique pela coluna «iniciada em» e procure por transações antigas, marcadas em vermelho: todas as transações graváveis e snapshots somente leitura seguram a Transação Ativa Mais Antiga e provocam que versões excessivas de registros sejam mantidas. Identifique onde essas transações foram iniciadas (clique com o botão direito e selecione «Ver anexo pai») e corrija seu código para confirmar esta transação mais cedo.

Instruções

FBMonLogger

A aba «Instruções» mostra instruções ativas no momento da captura: se você precisar capturar todas as instruções, FBPerfMon ou FBScanner devem ser usados (todas essas ferramentas fazem parte do IBSurgeon Optimization Pack).

Se «Vincular ao anexo selecionado» estiver habilitado, apenas instruções para o anexo específico serão mostradas; caso contrário, todas as instruções ativas estão na lista.

Algumas instruções não têm ID de transação associado (=0): essas consultas foram preparadas, mas não executadas.