Назад | Перейти на главную страницу

Какие запросы sql используют так много процессора?

У меня есть приложение с множеством разных запросов повсюду.

Я получаю всплески использования ЦП из-за mysqld, который максимально загружает мой сервер, и я не уверен, какой из многих запросов делает это.

Есть ли способ регистрировать / просматривать все запросы, поступающие с уровня unix? А может быть, посмотреть, какие запросы пережевывают все ресурсы?

Существует тип запроса, называемый «медленным запросом», который очень похож на звучание: запросы, выполнение которых занимает много времени. В некоторых случаях эти запросы являются законно длинными, но в подавляющем большинстве случаев медленный запрос указывает на плохо написанный код или нехватку ресурсов на сервере, из-за чего MySQL становится привязанным к вводу-выводу.

В любом случае, если вы видите всплески mysql, тогда очень и очень хорошо начать с определения ваших медленных запросов.

Я не достаточно гуру MySQL, чтобы снять это с головы, но вкратце вы хотите:

  • Включите медленное ведение журнала запросов (в большинстве дистрибутивов оно отключено по умолчанию)
  • Пусть немного поработает
  • Посмотрите в журнале, какие запросы являются вашими виновниками

Я даже не собираюсь пытаться вытаскивать инструкции из головы, но вы можете начать с этой ссылки:

http://www.ducea.com/2006/11/06/identifying-mysql-slow-queries/

И если срок действия этой ссылки истекает или становится бесполезным по иным причинам, ищите фразу вроде «регистрировать медленные запросы mysql».

Как только вы их зарегистрируете, вы сможете приступить к их сортировке.