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 SubstitutionAnd that's it, folks!
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.