Écrire une requête lente pour tester l'enregistrement des requêtes lentes?
Question
Y at-il une simple requête qui prendrait> 2 secondes pour que je puisse tester l'enregistreur de requêtes lentes?
Je cherche quelque chose comme un récursive générique ou instruction itérative.
La solution
Une requête simple serait:
SELECT SLEEP(2);
Vous voulez itérer il?
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)
Par ailleurs, si vous voulez juste tester votre slow_query_log, le changement « long_query_time » à 0 (log toutes les requêtes):
SET long_query_time=0;
Autres conseils
Voici une requête assez horrible. Il est un produit cartésien, en utilisant non-ansi le style de jointure.
use master
select * from sys.objects, sys.indexes
Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange