
Health checks no banco de dados: contra os perigos invisíveis
3 de agosto de 2026Em um cenário de tecnologia cada vez mais competitivo, a eficiência da infraestrutura de banco de dados é um pilar fundamental para o sucesso de qualquer negócio. Lentidão, alto consumo de recursos e custos operacionais elevados são desafios que impactam diretamente a experiência do usuário e a rentabilidade da empresa.
Foi nesse contexto que um de nossos clientes, uma empresa de tecnologia com uma base de dados de 6TB em Azure MySQL, nos procurou em busca de uma solução. E, através da nossa expertise, transformamos esse ambiente de 6TB em 500GB, com ganhos expressivos de performance e redução de custos.
Continue lendo este conteúdo para saber as dores que a empresa apresentava e todo o processo feito pela Horus Solutions, desde a análise, o diagnóstico e claro, a solução.
Desafio
A empresa enfrentava uma série de dificuldades críticas em seu ambiente Azure MySQL 8.0.15, configurado em arquitetura PaaS (Single Server). Sendo as principais dores:
- Lentidão generalizada: desempenho do sistema estava comprometido, afetando a experiência dos usuários finais;
- Consumo de CPU em 100%: consumo de processamento atingia o limite com frequência, indicando uma sobrecarga severa;
- Alto custo de armazenamento: volume de 6TB de dados gerava custos operacionais elevados na Azure, tanto no armazenamento do SGBD quanto nas rotinas de backup.
Solução Horus Solutions
Sabendo das dores do cliente, ficou claro que era necessário fazer um diagnóstico completo para identificar as causas-raiz desses problemas. Assim, seria possível propor soluções eficazes para otimizar a performance, reduzir o consumo de CPU e diminuir os custos com armazenamento.
Para enfrentar esses desafios, implementamos uma abordagem metodológica e abrangente, começando pela compreensão aprofundada do workload atual e o estabelecimento de um baseline de consumo.
As etapas foram as seguintes:
Instalação de ferramentas proprietárias
A primeira etapa foi instalar ferramentas. Sendo elas:
- MyMon: conjunto de scripts proprietários desenvolvido pela equipe da Horus para capturar diversas métricas detalhadas do MySQL;
- Falcon: ferramenta de monitoramento da Horus, essencial para a visibilidade do ambiente.
Configuração de log de queries lentas
Em seguida, foi feita a ativação e customização do slow query log do MySQL para capturar consultas de alto impacto. Após duas semanas de coleta de dados e com o baseline de consumo estabelecido, nossa equipe identificou as principais queries de maior impacto.
Com isso, conduzimos uma análise detalhada da instância. Com base nessa análise, foram elaboradas recomendações específicas para a melhoria do desempenho, incluindo:
- Otimização do código SQL: refatoração de queries para torná-las mais eficientes;
- Criação de índices: implementação de índices estratégicos para acelerar a busca e o acesso aos dados;
- Ajustes de parametrizações: configurações finas no MySQL para adequar o ambiente ao workload real.
Cenário técnico e análise detalhada
Com o baseline de consumo em mãos, foi feita uma análise detalhada, cruzando dados coletados pelo MyMon, Falcon e o dashboard de consumo da Azure. O objetivo era identificar as origens da alta pressão no processamento e uso intensivo da CPU, especialmente nos períodos de pico.
Inicialmente, foi identificada uma intensa atividade de I/O no cache da instância do MySQL, que permitiu a captura de um conjunto de queries de alto impacto no consumo de CPU através do slow query log.
Essas queries foram correlacionadas com picos de processamento no host através de coletas de baixa granularidade de conexões ativas. O foco principal foi capturar com precisão os processos que causavam o maior impacto no desempenho do ambiente.
Uma vez identificadas, o plano de execução de cada query foi avaliado para propor melhorias.
Como, por exemplo, a refatoração do código SQL para os ajustes para otimizar a lógica das consultas, a criação ou alteração na estrutura de índices para a melhoria na indexação para acesso mais rápido aos dados. E a simulações em ambientes de homologação para a validação das alterações antes da implementação em produção.
Outros pontos de melhoria específicos nos códigos SQL também foram identificados. Sendos eles:
- Uso ineficiente de LIKE: substituição por alternativas mais adequadas para valores exatos ou com curingas desnecessários;
- Excesso de cláusulas OR: reescrita de códigos utilizando operadores IN e UNION ALL para um plano de acesso mais eficiente;
- Conversão de datatypes: correção de comparações/JOINs entre colunas com tipos de dados diferentes que inibiam o uso de índices;
- Criação de índices: em queries com alto volume de execução para reduzir o processamento e melhorar o tempo de resposta.
Embora muitas queries não apresentassem planos de execução ineficientes individualmente, a execução simultânea de um grande volume delas causava uma sobrecarga significativa.
Foi necessário um trabalho minucioso em 20 códigos SQL para atingir o objetivo de redução da pressão sobre a CPU e melhorar o desempenho geral do sistema.
Soluções em ação
Após as melhorias de desempenho, atuamos na frente de alocação de espaço. Foi identificado que processos diários noturnos de rotinas batch envolviam grande movimentação de dados em tabelas core, com atividades de expurgos e importações de arquivos volumosos, resultando em alta fragmentação dos objetos.
Assim, foi implementado um plano de ação para desfragmentação do MySQL. O que resultou em uma redução drástica do espaço ocupado de 6TB para apenas 500GB, ou seja, um ganho de mais de 5TB.
Ações adicionais foram implementadas na rotina diária para evitar o crescimento excessivo do espaço e garantir o controle do uso de armazenamento, além de promover ganhos no tempo de processamento dos processos batch.
Por fim, realizamos uma avaliação geral do ambiente e das parametrizações do MySQL. Respeitando as limitações do ambiente PaaS da Azure, foram identificados e corrigidos parâmetros subdimensionados e superdimensionados.
Como, por exemplo, a criação de tabelas temporárias desnecessárias e o uso excessivo de ciclos de CPU para gerenciamento de conexões ociosas, fornecendo recomendações para otimizar ainda mais o ambiente.
Resultados
O projeto alcançou 100% dos objetivos estabelecidos, com um feedback extremamente positivo do cliente. Os resultados foram notáveis:
- Redução do consumo de CPU: o uso constante de CPU, que antes operava em 100%, foi drasticamente reduzido para 30%, garantindo mais estabilidade e capacidade de processamento;
- Otimização do espaço de armazenamento: o espaço ocupado, que era de 6TB, foi reduzido para impressionantes 500GB. Esse ganho de mais de 5TB resultou em uma economia significativa em custos de armazenamento na Azure, além de melhorar a performance de I/O e a estrutura de armazenamento de backups;
- Melhoria no tempo de resposta das aplicações: com a adequação dos parâmetros, otimização das queries e ações de desfragmentação, houve uma melhoria geral no tempo de resposta das aplicações, proporcionando uma experiência de usabilidade positiva para os usuários finais.
Recomendações
Esse projeto, que foi concluído em 2 semanas, mostra a nossa capacidade de transformar ambientes de banco de dados complexos e desafiadores em sistemas eficientes e de alto desempenho.
A identificação e correção das queries ofensoras, a otimização do espaço de armazenamento e a adequação dos parâmetros do MySQL resultaram em um ambiente mais estável, rápido e econômico para o cliente.
Ao final do projeto, foram feitas as seguintes recomendações para garantir a sustentabilidade das melhorias e preparar o ambiente para o futuro:
- Implementação de um servidor réplica: para balanceamento de carga de leitura;
- Ajuste nos parâmetros do MySQL: para otimização contínua;
- Melhorias em 20 queries: através da criação de novos índices e/ou alterações no código;
- Implantação de 3 rotinas periódicas: integridade, atualização de estatísticas e desfragmentação;
- Migração do Azure MySQL Single Server para o Azure MySQL Flexible Server: uma vez que o Single Server será descontinuado pela Microsoft.
Com esse projeto fica claro a eficiência e a expertise que temos para entregar resultados expressivos em tempo recorde. Se sua empresa estiver enfrentando desafios com banco de dados, chame nossa equipe. Nós podemos te ajudar!


