¿Escribir una consulta lenta para probar el registro lento de consultas?


14

¿Hay una consulta simple que tomaría> 2 segundos para que pueda probar el registrador de consultas lento?

Estoy buscando algo como una declaración recursiva o iterativa genérica.

Respuestas:


22

Una consulta simple sería:

SELECT SLEEP(2);

¿Quieres repetirlo?

DELIMITER $$
DROP FUNCTION IF EXISTS `iterateSleep` $$
CREATE FUNCTION `iterateSleep` (iterations INT)
RETURNS INT DETERMINISTIC
BEGIN
    DECLARE remainder INT;

    SET remainder = iterations;

    read_loop: LOOP     
        IF remainder=0 THEN
            LEAVE read_loop;
        END IF;

        SELECT SLEEP(2) INTO @test;
        SET remainder = remainder - 1;          
    END LOOP;

    RETURN iterations;
END $$
DELIMITER ;

-- TO TEST IT OUT
mysql> SELECT iterateSleep(2);
+-----------------+
| iterateSleep(2) |
+-----------------+
|               2 |
+-----------------+
1 row in set (4.01 sec)

Alternativamente, si solo desea probar su slow_query_log, cambie ' long_query_time ' a 0 (para registrar todas las consultas):

SET long_query_time=0;

Como nota al margen, el equivalente para SQL Server esWAITFOR DELAY '00:00:02'
Ben Brocka

seleccione dormir (2) es la respuesta que estaba buscando; No puedo configurar long_query_time yo mismo.
David LeBauer

Corto y dulce siempre está limpio. Buen procedimiento almacenado también. +1 !!!
RolandoMySQLDBA

El SELECT sleep(2)no añade nada a la lenta-registro - pero el SET GLOBAL long_query_time=0me dio de entrada rápida a prueba. Gracias.
Jesper Grann Laursen

0

Aquí hay una consulta bastante horrible. Es un producto cartesiano, que utiliza un estilo de unión no ansi.

use master
select * from sys.objects, sys.indexes

ordenado ... Pero no creo que sea mysql.
Derek Downey

¡Uy! Lo siento. No me di cuenta de que era para MySQL.
datagod
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.