¿Cómo puede crear artificialmente una consulta lenta en mysql?


15

Voy a hacer una presentación práctica en un par de semanas. Parte de esta demostración es para solucionar problemas básicos de mysql, incluido el uso del registro de consulta lento. He generado una base de datos e instalé nuestra aplicación, pero es una base de datos limpia y, por lo tanto, es difícil generar suficientes problemas.

He intentado lo siguiente para obtener consultas en el registro lento de consultas:

Establezca el tiempo de consulta lento en 1 segundo.

Múltiples índices eliminados.

Destacó el sistema:

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

Scripted algunas llamadas básicas de la página web usando wget.

Nada de esto ha generado consultas lentas. ¿Hay otra forma de estresar artificialmente la base de datos para generar problemas? No tengo suficientes habilidades para escribir un Jmeter complejo u otro generador de carga. Espero quizás algo integrado en mysql u otro truco de Linux más allá del estrés.


1
+1 Por pedir obtener coros lentos. Si solo fuera así en casos reales: D
rojo

Respuestas:


5

Pedido mysqlslap . Puede pasar una de las consultas de su aplicación web con --query y especificar clientes concurrentes con --concurrency.


Esto funcionó mejor ... usando esto y una combinación de ajuste de la base de datos.
Grey Race

34

Totalmente artificial pero puedes usar la sleep()función:

select sleep(10);

En el registro:

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);

Gracias por la sugerencia ... Hace que el registro crezca, pero me gustaría que fueran consultas legítimas para la aplicación. De esta manera puedo explicar explicaciones y otras herramientas de diagnóstico.
Carrera gris

:) Hmm ... tal vez una estrategia LOCK TABLESfuncionará. Eso puede ser demasiado torpe también.
Mark Wagner

1
Por lo general, seleccione * de ((seleccione * de la base de datos) x) y seguir obteniendo más y más recriminación es el truco para mí.
alexyorke

Úselo DO SLEEP(10);si no desea el resultado de SLEEP en su consulta.
Rasmus Friis Kjeldsen

1

¿Quizás ayudar a desactivar la base de datos? Por ejemplo, reducir el tamaño de key_buffers?

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.