ferramenta para teste de carga SQL personalizado

ferramenta para teste de carga SQL personalizado

Gostaria de fazer alguns testes para comparar nossa aplicação mysql em diversas configurações. Mas não quero usar algo como testes sysbench ou oltp, porque temos uma lógica pesada de procedimentos armazenados. Então... quero testar nossos procedimentos.

Existe algum aplicativo/estrutura de teste que possamos usar para executar consultas personalizadas (como opção - em paralelo) e ver estatísticas? Algo como Siege para web? O que já descobri geralmente usa seus próprios esquemas e cenários de banco de dados gerados.

Eu poderia pedir aos meus desenvolvedores que criassem alguma interface java personalizada e usassem o Siege para isso, o bot não quer adicionar sobrecarga ou afetar números.

Atenciosamente, Igor.

Responder1

Jmeter pode fazer testes de carga de banco de dados usando JDBC:http://jakarta.apache.org/jmeter/usermanual/build-db-test-plan.html

Eu não usei a funcionalidade jdbc antes, então não sei se ela irá lidar com suas consultas complexas.

Responder2

Você pode seguir os princípios gerais da maioria dos mecanismos de teste de unidade para construir um mecanismo de teste de unidade MySQL simples.

Construímos algo assim para MS SQL no passado

A ideia era a seguinte

1) Escrevemos procedimentos de teste de unidade e atribuímos a eles prefixos de mesmo nome, como "test_". No MS SQL também usamos propriedades estendidas como meta informações para descrever alguns parâmetros específicos de nossos testes (o mesmo que no NUnit pode-se usar diferentes atributos de teste)

2) Escrevemos um procedimento/script que abre um cursor, seleciona do catálogo todos os nomes de procedimentos que iniciam com "test_" e executamos cada um deles na instrução EXEC (@procedure_name). Se o teste falhar, o procedimento de teste deverá gerar um erro.

3) Os resultados da execução do teste são armazenados em uma tabela.

4) Para executar o teste nos mesmos dados e obter resultados previsíveis, temos um banco de dados de teste de amostra do qual fizemos backup uma vez e restauramos do backup antes de cada execução de teste

Responder3

Se você quiser uma ferramenta que agora vem com o MySQL 5.1, você poderia fazer pior do que tentarMySQL Slap (também conhecido como mysqlslap). Um exemplo direto da documentação:

Forneça suas próprias instruções SQL de criação e consulta, com 50 clientes consultando e 200 seleções para cada um:

mysqlslap --delimiter=";" \  
--create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" \  
--query="SELECT * FROM a" --concurrency=50 --iterations=200

Isto fornece a opção de executar os testes em paralelo - embora a implementação do paralelismo usando vários clientes possa não ser exatamente do seu agrado. Aqui está uma breve descrição (novamente, literalmente):

mysqlslap é executado em três estágios:

  1. Crie esquema, tabela e, opcionalmente, quaisquer programas ou dados armazenados que você deseja usar para o teste. Este estágio usa uma única conexão de cliente.

  2. Execute o teste de carga. Este estágio pode usar muitas conexões de cliente.

  3. Limpar (desconectar, descartar tabela, se especificado). Este estágio usa uma única conexão de cliente.

Se isso não for exatamente do seu gosto, você pode usar um script cron para acionar o MySQL Slap em um horário específico para muitos usuários, ou para muitas máquinas configuradas/especificadas de forma idêntica, com caminhos de rede idênticos para o servidor, etc. muito importante, uma vez que a avaliação comparativa deve eliminar quaisquer possíveis discrepâncias para evitar conclusões obscuras).

Se (como é provável) você estiver executando uma versão anterior do MySQL,esse linkfornece informações úteis sobre como compilar o código-fonte 5.1 para 5.0; backporting adicional provavelmente não será possível.

Aqui está um passo a passo básico.

Responder4

acabei usandoSQLIO para sobrecarregar os discos e, em seguida, escrevi algumas consultas personalizadas para gerar uma grande quantidade de dados e, em seguida, fazer vários cálculos em tabelas grandes e simular um banco de dados muito carregado, mas mal otimizado. Em seguida, aumentei o número de conexões simultâneas até que ela morresse.

informação relacionada