Por que eu devo ler este artigo: Uma ferramenta fundamental para entender o funcionamento de um determinado SGBD é execução de testes de desempenho. A primeira etapa é construir um esquema composto por tabelas e índices. O esquema pode ser o da sua aplicação ou um um padrão disponível. Para este segundo caso, no artigo anterior foi apresentado o benchmark TPC-C e um software para gerar o esquema, popular as tabelas e criar os índices. Neste artigo apresentamos um software para executar os testes e monitorar o desempenho do SGBD.

Utilização do JMeter

O software chama-se JMeter, é uma das ferramentas desenvolvidas dentro do projeto Jakarta. Ele esta disponível no site . JMeter permite testar diferentes componentes de um ambiente servidor, como servidores HTTP, FTP e SGBD. Obviamente, aqui nos concentraremos na análise de SGBD.

Após baixar o software e descompatá-lo em um subdiretório, basta clicar no arquivo chamado JMeter.jar para executar o programa. A tela de entrada esta apresentada na figura 1.

Tela inicial do JMeter
Figura 1. Tela inicial do JMeter

A primeira tarefa é configurar a conexão JDBC. Para tanto, clique com botão direito em Test Plan, e escolha Add --> Config Element -->JDBC Connection Configuration. A figura 2 mostra a tela que deve ser preenchida. O principal é definir o string de conexão. Para quem não esta acostumado com Java, do exemplo da figura 2, basta alterar a parte final, depois do arroba, com a seguinte sequência IP:PORTA:SID, não esquecendo dos “:” entre uma informação e outra. E, claro, usuário e senha. Porém, cada SGBD tem uma string de conexão diferente, então, se não estiver utilizando Oracle, é necessário dar uma olhada pela Internet. Importante e fundamental, o driver JDBC deve ser colocado no subdiretório /lib do JMeter. É mais fácil que alterar o classpath no arquivo de execução. Se não for feito, o JMeter não dá mensagem de erro.

Tela de configuração da conexão
Figura 2. Tela de configuração da conexão

A terceira etapa é definir a consulta SQL que será executada, no menu Add --> Sampler --> JDBC Request. A janela a ser preenchida pode ser vista na figura 3. O usuário pode escolher três tipos de consultas: Select, Update e Callable. A opção Select já é autoexplicativa. A opção Update inclui qualquer comando de modificação em tabelas, portanto, Insert, Update e Delete. E Callable pode ser utilizada para executar Stored Procedures.

Configuração do comando a ser executado no banco
Figura 3. Configuração do comando a ser executado no banco

A quarta etapa é configurar os parâmetros da configuração. Na figura 4, os parâmetros básicos são:

  • Number of threads (users): número de usuários concorrentes a simular
  • Ramp-up period (in seconds): é a diferença entre iniciar um usuário e outro. Zero indica para o JMeter iniciar todos juntos no início da simulação. Outro valor, mairo que zero, indica um certo escalonamento, Por exemplo, 5 usuários e 10 segundos, resulta em um usuário a cada 2 segundos.
  • Loop-count: número de vezes que o comando SQL será repetido. Marcando Forever indica que o comando será repetido muitas vezes, até todos usuários concluírem
Configuração do teste
Figura 4. Configuração do teste

Para monitorar os resultados, o melhor é acrescentar um gráfico de resultados, na opção Add --> Listener --> Graph Result.

Resolvida a utilização do software, o próximo ponto crítico é decidir o que medir e como. Um tanto de método científico é importante:

  1. identifique seu problema ou dúvida;
  2. execute o comando SQL de maneira individual;
  3. configure, inicialmente, valores baixos para número de usuários e repetições, de modo a não sobrecarregar seu servidor já na primeira vez, até achar valores interessantes;
  4. se for alterar parâmetros de configuração do SGBD, altere um parâmetro de cada vez, sempre guardando os resultados, até encontrar a configuração mais adequada para sua situação.

Conclusão

E, finalmente, paciência para verificar várias alternativas, pois os parâmetros de configuração se influenciam mutuamente. As vezes, alterar apenas um deles pode surtir pouco efeito, mas combinado com um segundo parâmetro, pode dar um efeito mais significativo.