Написать медленный запрос, чтобы проверить медленную регистрацию запросов?


14

Есть ли простой запрос, который занял бы> 2 секунды, чтобы я мог проверить медленный регистратор запросов?

Я ищу что-то вроде общего рекурсивного или итеративного утверждения.

Ответы:


22

Простой запрос будет:

SELECT SLEEP(2);

Вы хотите повторить это?

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)

В качестве альтернативы, если вы просто хотите протестировать свой slow_query_log, измените long_query_time на 0 (для регистрации всех запросов):

SET long_query_time=0;

В качестве обозначения эквивалент для SQL ServerWAITFOR DELAY '00:00:02'
Бен Брока

выберите сон (2) - это ответ, который я искал; Я не могу установить long_query_time самостоятельно.
Дэвид Лебауэр

Коротко и сладко всегда аккуратно. Хорошая хранимая процедура. +1 !!!
RolandoMySQLDBA

Он SELECT sleep(2)ничего не добавил к медленному журналу - но SET GLOBAL long_query_time=0дал мне быстрый ввод для проверки. Благодарю.
Джеспер Гранн Лаурсен

0

Вот довольно ужасный запрос. Это декартово произведение, использующее не-ANSI стиль соединения.

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

аккуратно ... Но я не думаю, что это mysql.
Дерек Дауни

упс. Сожалею. Я не заметил, что это было для MySQL.
Датагод
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.