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.
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.
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 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É 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.