Como pode artificialmente criar uma consulta lenta no mysql?

11

Eu estou dando uma apresentação em algumas semanas. Parte desta demonstração é para resolução de problemas básica do mysql, incluindo o uso do log de consultas lentas. Gerei um banco de dados e instalei nosso aplicativo, mas é um banco de dados limpo e, portanto, difícil gerar problemas suficientes.

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

Defina o tempo de consulta lento para 1 segundo.

Excluiu vários índices.

Estressado o sistema:

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

Roteiro de algumas chamadas básicas de páginas da Web usando o wget.

Nada disso gerou consultas lentas. Existe outra maneira de enfatizar artificialmente o banco de dados para gerar problemas? Eu não tenho habilidades suficientes para escrever um Jmeter complexo ou outro gerador de carga. Eu estou esperando talvez por algo embutido no mysql ou outro truque do Linux além do estresse.

    
por Gray Race 30.06.2011 / 01:07

3 respostas

5

Faça o check-out mysqlslap . Você pode passar uma das consultas do seu webapp com --query e especificar clientes simultâneos com - coincidência.

    
por 30.06.2011 / 16:23
26

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

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);
    
por 30.06.2011 / 01:21
1

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

    
por 30.06.2011 / 01:16