Scrivere una query lenta per testare la registrazione di query lento?
Domanda
C'è una semplice query che avrebbe preso> 2 sec in modo che io possa provare il registratore query lente?
Cerco qualcosa di simile a un ricorsiva generica o una dichiarazione iterativo.
Soluzione
Una query semplice potrebbe essere:
SELECT SLEEP(2);
Si vuole iterare esso?
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)
In alternativa, se si desidera solo per testare la vostra slow_query_log, cambiamento ' long_query_time ' a 0 (per registrare tutte le domande):
SET long_query_time=0;
Altri suggerimenti
Ecco una query piuttosto orribile. Si tratta di un prodotto cartesiano, utilizzando non-ansi stile join.
use master
select * from sys.objects, sys.indexes
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange