A captura de performance do Cloud SQL para MySQL ajuda a diagnosticar e resolver problemas de performance complexos e temporários no seu banco de dados MySQL.
Quando a instância sofre degradação de performance, como uma lentidão ou paralisação do banco de dados, as métricas padrão podem ser insuficientes para determinar a causa raiz. A captura de desempenho resolve esse problema capturando snapshots detalhados e pontuais do banco de dados no momento em que um problema é detectado. É possível usar gatilhos configuráveis para criar snapshots em todo o sistema quando ocorrem problemas transitórios e para detectar transações de longa duração.
Exemplos de casos de uso
Esta seção lista exemplos de casos de uso de como usar a captura de performance depois de ativá-la na sua instância.
Diagnosticar uma paralisação do banco de dados
Problema: uma instância não responde há vários minutos, mas as métricas mostram apenas uma queda nas consultas por segundo (QPS) e um aumento nas conexões.
Exemplo de uso: defina um acionador de limite usando runningThreadsThreshold.
O registro de captura de desempenho revela um grande número de esperas de semáforo, o que identifica uma disputa de mutex específica (por exemplo, no índice de hash adaptativo) como a causa raiz.
Analisar a degradação da consulta
Problema: o desempenho da consulta diminui repentinamente em todo o sistema.
Exemplo de uso: o registro de captura de performance revela uma única transação de longa duração que acumulou um grande número de registros de desfazer. O registro identifica a transação de longa duração, o usuário e o texto da consulta.
Investigar o atraso de replicação
Problema: uma réplica de leitura está ficando muito atrás da origem.
Exemplo de uso: você configura um limite de acionamento de alto valor para secondsBehindSourceThreshold. Verifique o log de captura de desempenho para identificar o GTID específico que está causando o atraso.
Gerenciar transações de longa duração
Problema: um job em lote ou uma consulta do usuário é executado por um período excessivo, mantendo bloqueios.
Exemplo de uso: você configura um gatilho de limite para transactionDurationThreshold.
O registro de captura de desempenho identifica a transação que excede o limite. Você pode usar essas informações para investigar.
Como os dados de performance são capturados
A captura de desempenho funciona como um serviço baseado em agente que monitora sua instância. Quando você ativa a captura de desempenho, sua instância do Cloud SQL faz o seguinte para capturar dados de desempenho:
O agente testa a configuração do banco de dados para ler os gatilhos que você definiu. Em seguida, o agente sonda as métricas do banco de dados em um intervalo configurável, que é definido como 30 segundos por padrão.
Se um problema for detectado e o limite de um gatilho for excedido, o agente vai continuar comparando o estado ativo do banco de dados com suas regras. Para evitar alarmes falsos de picos temporários, o agente aciona uma captura completa de desempenho somente se detectar o problema em um número consecutivo de sondagens. Por exemplo, o agente pode acionar uma captura de desempenho se detectar que o número de linhas de execução está alto para três sondagens seguidas.
Quando uma captura de desempenho é acionada, o agente se conecta ao banco de dados e executa uma série de comandos de diagnóstico para capturar um snapshot detalhado.
As informações capturadas são formatadas em entradas de registro e enviadas diretamente ao Cloud Logging do projeto para a instância do Cloud SQL em um fluxo de registros específico chamado
mysql-performance-capture.log.
Gatilhos configuráveis
É possível configurar os seguintes gatilhos para captura de performance:
runningThreadsThreshold: é acionado quando o número de linhas de execução ativas em execução em uma instância principal excede o valor especificado. Por exemplo, você pode configurar o limite para executar a captura de desempenho se o número de threads em execução ativas for maior que 100.secondsBehindSourceThreshold: aciona réplicas quando o atraso de replicação excede o número de segundos especificado. Por exemplo, você pode configurar o limite para executar a captura de desempenho se o atraso da réplica de leitura for superior a 300 segundos.transactionDurationThreshold: aciona o registro de transações individuais que duram mais do que o período especificado. Por exemplo, você pode configurar o gatilho para registrar qualquer transação única que dure mais de 10 minutos.
Período de espera após uma captura de desempenho
Para evitar o registro excessivo e a sobrecarga do sistema durante um evento de desempenho sustentado, a captura de desempenho implementa um período de espera de 30 minutos após uma captura de snapshot bem-sucedida. Esse período de espera é ativado automaticamente para evitar que o agente acione novas capturas redundantes enquanto o sistema está em um estado de problema prolongado.
Preços
A captura de performance armazena registros no Cloud Logging, o que pode gerar custos adicionais de armazenamento.
Para mais informações sobre os preços de armazenamento de registros no Logging, consulte Preços.
Limitações
- Para usar a captura de desempenho, é preciso ativar os insights de consulta. Se você desativar os insights de consulta, também vai desativar a captura de performance.
- A captura de desempenho está disponível apenas para o Cloud SQL para MySQL 5.7 e versões mais recentes.