Clique no banner para conhecer e adquirir o meu treinamento de Bancos de Dados no Azure

SQL Server – Como utilizar a ferramenta SQLQueryStress

Visualizações: 5.189 views
Tempo de Leitura: 4 minutos

OlĂ¡ pessoal,
Bom dia!

Neste post, vou apresentar e demonstrar a utilizaĂ§Ă£o da ferramenta open-source SQLQueryStress, do Adam Machanic (criador da sp_WhoIsActive), que serve para realizar testes de stress executando uma determinada query, permitindo que vocĂª realize uma sĂ©rie de testes na sua instĂ¢ncia SQL. Como esse projeto nĂ£o Ă© mais mantido e atualizado pelo Adam, o Erik Ejlskov Jensen criou um Github para criar novos recursos e melhorias para a ferramenta.

A ferramenta permite que vocĂª defina quantas threads serĂ£o executadas simultaneamente, quantas execuções e qual o intervalo de tempo entre cada execuĂ§Ă£o, permitindo realizar vĂ¡rios tipos de testes, das quais destaco:

  • Verificar o comportamento da instĂ¢ncia com uma determinada quantidade de sessões em execuĂ§Ă£o
  • Executar vĂ¡rias queries ao mesmo tempo para estressar a CPU, disco e memĂ³ria do servidor e verificar o seu comportamento
  • SimulaĂ§Ă£o de um ambiente crĂ­tico com vĂ¡rias transações por segundo durante os testes de sistemas e consultas SQL
  • Identificar quantas vezes uma SP Ă© executada por dia, realizar uma otimizaĂ§Ă£o e simular qual seria o ganho de tempo no dia
  • Executar uma query ou SP vĂ¡rias vezes, com parĂ¢metros aleatĂ³rios e analisar seu comportamento

Enfim, a lista de possibilidades Ă© muito grande e o software te dĂ¡ vĂ¡rias ferramentas para melhorar sua anĂ¡lise, como possibilidade de utilizar ou nĂ£o, o Pool de conexões, limpar caches, limpar buffer, etc.

A utilizaĂ§Ă£o da ferramenta Ă© bem simples, por isso nĂ£o vou fazer muitas demonstrações. O intuito desse post Ă© compartilhar essa ferramenta para quem ainda nĂ£o a conhecia, de forma que possa melhorar suas anĂ¡lises sobre a performance das instĂ¢ncias SQL Server que vocĂª demonstra ou fazer testes de performance em alguma query.

ApĂ³s baixar o executĂ¡vel da ferramenta neste link, vocĂª verĂ¡ a tela inicial do SQLQueryStress. Clique no botĂ£o “Database” para configurar a conexĂ£o com o banco de dados.

NĂ£o recomendo a utilizaĂ§Ă£o desse software em ambientes de produĂ§Ă£o, a nĂ£o ser que seja em um horĂ¡rio de manutenĂ§Ă£o agendada e que vocĂª queira fazer testes de stress na instĂ¢ncia.

Tela inicial do SQLQueryStress

Nesta tela, vocĂª poderĂ¡ digitar o nome do servidor\instĂ¢ncia de conexĂ£o, bem como dados de tipo de autenticaĂ§Ă£o, usuĂ¡rio e senha.

Tela de configuraĂ§Ă£o de conexĂ£o com o banco de dados

De volta Ă  tela inicial, vamos definir a query que serĂ¡ executada, os parĂ¢metros de execuĂ§Ă£o e iniciar o processamento.

ParĂ¢metros de execuĂ§Ă£o:
Number of Iterations: É o nĂºmero de vezes que a query serĂ¡ executada
Number of Threads: NĂºmero de sessões que serĂ£o executadas em paralelo (ao mesmo tempo)
Delay between queries (ms): Quantidade de millisegundos entre o fim de uma query e o inĂ­cio da prĂ³xima.

Vale ressaltar que o nĂºmero de vezes que a query serĂ¡ executada Ă© atravĂ©s da conta Number of Iterations x Number of Threads, ou seja, se vocĂª colocar 10 iterações com 5 threads, a sua query serĂ¡ executada 50 vezes.

Resultado da execuĂ§Ă£o:

Resultado do WhoIsActive, demonstrando as conexões sendo executadas:

(Obs: Tive que colocar um WAITFOR DELAY na SP para que elas apareçam no WhoIsActive, uma vez que a SP de teste Ă© muito simples e roda muito rĂ¡pido)

Como utilizar o Parameter Substitution

Clique aqui para saber mais sobre o Parameter Substitution
Um recurso muito legal que vou mostrar Ă© o Parameter Substitution, que permite executar queries e SP’s passando parĂ¢metros baseado no retorno de uma query.

Neste exemplo, vou criar uma tabela e inserir vĂ¡rios valores aleatĂ³rios que serĂ£o utilizados como parĂ¢metros para as chamadas da SP que vou testar no SQLQueryStress.

CriaĂ§Ă£o da funĂ§Ă£o para gerar nĂºmeros aleatĂ³rios:

GeraĂ§Ă£o dos dados aleatĂ³rios para testes

Exemplo de tabela com dados aleatĂ³rios:

Uma vez que a tabela com os dados de teste jĂ¡ foi criada e populada, basta configurar no software a substituiĂ§Ă£o dos parĂ¢metros:

É isso aí, pessoal!
Espero que tenham gostado desse post e dessa excelente ferramenta para testar queries e o limite de processamento da sua instĂ¢ncia SQL Server.
Um abraço e atĂ© a prĂ³xima.