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

dba.stackexchange https://dba.stackexchange.com/questions/7777

  •  16-10-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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'to 0 (для регистрации всех запросов):

SET long_query_time=0;

Другие советы

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

use master
select * from sys.objects, sys.indexes
Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top