Como criar artificialmente uma consulta lenta no mysql?


15

Estou dando uma apresentação prática daqui a algumas semanas. Parte desta demonstração é para solucionar problemas básicos do mysql, incluindo o uso do log de consultas lentas. Eu criei um banco de dados e instalei nosso aplicativo, mas é um banco de dados limpo e, portanto, difícil de gerar problemas suficientes.

Eu tentei o seguinte para obter consultas no log de consultas lentas:

Defina o tempo de consulta lento como 1 segundo.

Vários índices excluídos.

Salientou o sistema:

stress --cpu 100 --io 100 --vm 2 --vm-bytes 128M --timeout 1m

Script algumas chamadas básicas da página da Web usando o wget.

Nada disso gerou consultas lentas. Existe outra maneira de forçar artificialmente o banco de dados a gerar problemas? Não tenho habilidades suficientes para escrever um Jmeter complexo ou outro gerador de carga. Espero, talvez, algo embutido no mysql ou outro truque do linux além do estresse.


1
+1 Por pedir para obter lentidão. Se ao menos fosse assim em casos reais: D
red

Respostas:


5

Caixa mysqlslap . Você pode passar uma das consultas do seu aplicativo da web com --query e especificar clientes simultâneos com --concurrency.


Isso funcionou melhor ... usando isso e uma combinação de ajuste do banco de dados.
Grey Race

34

Totalmente artificial, mas você pode usar a sleep()função:

select sleep(10);

No log:

Time                 Id Command    Argument
# Time: 110629 16:19:13
# User@Host: mysql[mysql] @ localhost []
# Query_time: 10.000218  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1309389553;
select sleep(10);

Obrigado pela sugestão ... Ele faz o log crescer, mas eu gostaria que eles fossem consultas legítimas para o aplicativo. Desta forma, eu posso demonstrar e explicar outras ferramentas de diagnóstico.
Grey Race

:) Hmm ... talvez um estratégico LOCK TABLESfuncione. Isso pode ser muito desajeitado também.
Mark Wagner

1
Normalmente, selecione * de ((selecione * do banco de dados) x) e cada vez mais recrutador faz o truque para mim.
precisa saber é o seguinte

Use DO SLEEP(10);se você não quiser o resultado do SLEEP na sua consulta.
Rasmus Friis Kjeldsen

1

Talvez o ajuste do banco de dados possa ajudar? Por exemplo, reduzindo o tamanho dos key_buffers?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.