Написати повільний запит, щоб перевірити повільний журнал запитів?


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 Server єWAITFOR DELAY '00:00:02'
Бен Брокка

вибрати сон (2) - це відповідь, яку я шукав; Я не можу встановити long_query_time самостійно.
David LeBauer

Коротке і солодке завжди охайне. Ніца зберігається процедура. +1 !!!
RolandoMySQLDBA

SELECT sleep(2)Нічого не додає до уповільненого журналу - але SET GLOBAL long_query_time=0дав мені швидкий вхід для тестування. Дякую.
Jesper Grann Laursen

0

Ось досить жахливий запит. Це декартовий продукт, який використовує приєднання в стилі non-ansi.

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

акуратно ... Але я не думаю, що це mysql.
Дерек Дауні

ой. Вибачте. Я не помітив, що це для MySQL.
datagod
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.