Meu sistema está lento! E aí? Será que é banco?

Muitos de nós já experimentamos aquela sensação de lentidão ao utilizar um sistema, uma tela demorar a abrir, travamento de tarefa e a primeira coisa que vem à cabeça neste momento é “Será que estou com problema no meu banco?”.

    A resposta para essa pergunta seria “pode ser, mas pode não ser”

    Sim, trata-se de uma resposta dúbia, justamente porque lentidão, má performance, mau desempenho ou seja lá qual o melhor nome que queira chamar é uma questão que engloba diversos fatores como percepção de lentidão, conexão, recursos no limite, rotinas e/ou problemas com software. Antes, é preciso dizer que, Sim! O problema pode ser banco, no entanto, podemos aprender a diagnosticar para entender quando a origem do problema for outra.

    Percepção de Lentidão

    Uma lentidão é diagnosticada quando a percepção do desempenho foge de um padrão, ou seja, de algo que não se considera aceitável dentro do que vinha ocorrendo no dia-a-dia. Veja bem, só conseguimos dizer se algo está lento, através da percepção de algo rápido que já experimentamos, por exemplo: Nos anos 90, possuíamos a famosa internet discada e conseguíamos realizar acessos que dentro dos padrões da época eram considerados normais, no entanto se compararmos a velocidade de antigamente com a atual, e experimentássemos aquela experiência hoje, seria com certeza um motivo de irritação.

    O que quero causar nesta reflexão é que a percepção de lentidão depende de quem está utilizando o sistema. Uma forma interessante de mensurar a lentidão é comparar o seu uso com os dias anteriores e entender se ocorreu uma diferença de um determinado padrão. Caso tenha ocorrido, podemos considerar que existe um problema e ele precisa ser tratado.

    Conexão

    Outro fator extremamente importante que pode deixar um sistema com desempenho ruim é a conexão entre uma origem e um destino. Para nos comunicarmos através da internet, passamos de uma origem para um destino através de um meio de transporte, seja um cabo de rede, uma rede WIFI que liga uma sala a outra, ou dois escritórios em estados diferentes.

    Uma analogia que pode ser feita é da ida/volta para o trabalho, por exemplo: Um cidadão vai para o ponto de ônibus, entra na condução e vai em direção ao seu trabalho. É possível estabelecer uma estimativa de tempo até a chegada ao trabalho, no entanto existem fatores externos que podem atrasar esta estimativa como a chuva, acidentes na via, gasolina acabar e isso com certeza fará com que a chegada seja mais demorada.

    Agora trazendo para o ramo tecnológico, se uma aplicação e banco que estão em um servidor A e um usuário que está em um computador B estabelecem uma conexão e é notada uma lentidão, podem ser realizados alguns testes para entender se está ocorrendo algo com a rede. Uma ação que pode ser feita é de testar a rota, observando a latência para chegar de um ponto a outro, uma outra ação que também pode ser considerada é de realizar o acesso de outro local físico, caso ocorra uma melhora na resposta, seria interessante investigar mais a fundo com quem provém o serviço de internet para entender se a rede está com alguma inconsistência.

    Recurso do Sistema

    Recursos do sistema, em minha visão, é a causa mais simples de diagnosticar. Um servidor é composto por recursos (CPU, RAM, DISCO) e já levando em consideração que seu sistema esteja em um servidor que esteja de acordo com os requisitos do fabricante, pode acontecer do uso de um ou mais recursos chegar ao limite.

    Caso uma memória, CPU e/ou disco chegue a 100% de utilização, é uma indicação que o servidor aumentou de demanda e que o mesmo precisa de mais recursos para funcionar de maneira mais eficiente.

    Uma analogia que pode ser feita é de um professor em uma sala de aula. No primeiro exemplo temos um professor para dois alunos, a velocidade de resposta para esses dois alunos será relativamente rápida, no entanto, se tivéssemos um professor para 15 alunos, o professor teria que se desdobrar para atender a todos em sua mesa. Para resolver este problema, deveria-se contratar mais professores, ou seja, mais recursos.

    Rotinas

    É importante entender e estabelecer um padrão da quantidade de vezes que ocorre alguma falta de performance e o mais importante, quando acontece. Caso uma lentidão seja experimentada em apenas um horário específico do dia, pode estar relacionado a alguma rotina que poderia estar rodando em um horário em que o servidor não estivesse ocioso.

    Logo, identificar se um antivírus está escaneando, se algum backup está sendo gerado ou se qualquer rotinas está sendo executada em um horário de pico é um excelente diagnóstico e modificar esta rotina de horário, seria uma escolha muito interessante.

    Problemas com Software

    Primeira consideração sobre problemas com software é… Respeite os requisitos mínimos, pois o sistema foi construído em um ambiente controlado que vai oferecer a melhor experiência para o usuário que respeitar as configurações. Caso esta consideração tenha sido aplicada e ocorra perda de desempenho durante a execução de uma tarefa específica dentro do sistema, pode ser que exista a necessidade de trabalhar a consulta que está sendo realizada para que ela funcione de maneira mais rápida. Normalmente isto é realizado pelo fabricante e geralmente isto é corrigido com uma atualização.

    Todos os fatores citados acima podem ser diagnosticados por um administrador de banco de dados e muitas ações podem ser executadas sem necessidade de adentrar no SGBD. No entanto, o intuito deste tópico é mostrar formas de identificar o porquê do seu sistema está lento e como diagnosticar a causa e se mesmo após todo a análise realizada, o problema com sua performance continuar acontecendo, um DBA poderá te ajudar realizando manutenções internas que te auxiliarão na melhora da percepção de velocidade, assim como sugerir melhorias para o melhor funcionamento do seu ambiente te passando a tranquilidade que você merece.

    Wallace Mendes
    Especialista em Banco de Dados na AMT