Напишите медленный запрос, чтобы проверить медленные регистрации запросов?
Вопрос
Есть ли простой запрос, который займет> 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
Не связан с dba.stackexchange