2011-12-26 1 views
3

У меня есть пользователь, который вставил несколько «SELECT SLEEP (2);» запросов в их код, и я пытаюсь выяснить влияние этого запроса на производительность базы данных. Запросы отображаются в журнале медленных запросов MySQL, а mk-tools сообщают о запросах как значительную часть времени выполнения, хотя неясно, соответствует ли это фактическому времени процессора.Является ли функция SLEEP() MySQL оживленной?

+0

Рассмотрите ['top'] (http://linux.die.net/man/1/top)? –

+0

(я бы * надеюсь, что это не «ожидание ожидания», или, по крайней мере, в некотором смысле, что потребляет заметный процессор: нет причин, по которым другим мерам должно быть мешало.) –

ответ

2

Это не ожидание, но это тоже не полезно.

Функция sleep() MySQL занимает серверный поток для длины сна, что означает, что он не может выполнять другие (более полезную работу) и использует стек потока в процессе сервера mysql. Это нежелательные вещи, и их не следует поощрять.

В некоторых случаях (в зависимости от контекста) блокировки могут удерживаться во время сна().

Конечно, функция sleep() очень полезна для отладки, но я считаю, что она не должна быть в производственном коде.

Если клиент-поток хочет спать, он должен спать сам, а не просить mysql сделать это.

Смежные вопросы