Czy istnieje proste zapytanie, które zajęłoby> 2 sekundy, aby móc przetestować powolny rejestrator zapytań?
Szukam czegoś w rodzaju ogólnego stwierdzenia rekurencyjnego lub iteracyjnego.
Prostym zapytaniem byłoby:
SELECT SLEEP(2);
Chcesz to powtórzyć?
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)
Alternatywnie, jeśli chcesz tylko przetestować swój slow_query_log, zmień „ long_query_time ” na 0 (aby zarejestrować wszystkie zapytania):
SET long_query_time=0;
WAITFOR DELAY '00:00:02'
SELECT sleep(2)
Nie dodaje niczego do powolnego-log - aleSET GLOBAL long_query_time=0
dał mi szybkiego wejścia do testu. Dzięki.Oto dość okropne zapytanie. Jest to produkt kartezjański, wykorzystujący łączenie w stylu non-ansi.
źródło