Просмотр очереди запросов в MySQL

Большинство запросов к базе данных на сайтах выполняются за сотые доли секунды. А если запрос получает данные дольше, то необходимо провести его оптимизацию. То есть пересмотреть его построение, способ объединения таблиц, наличие ограничений по выборке и другие существенные особенности запроса, которые влияют на время его выполнения.

Но чтобы найти медленный запрос, требуется либо обратиться за помощью к CMS (это лучший вариант, если в CMS есть такая функция). Либо включить отладчик на PHP или написать свой измеритель времени выполнения. Но есть и другой способ. Можно посмотреть очередь запросов в MySQL напрямую. Для этого следует лишь выполнить в SQL консоли запрос:
SELECT * FROM information_schema.processlist;
Учитывая что запросы от сайта к базе данных выполняются за доли секунд, придётся много раз выполнять эту команду, в надежде поймать "тормозящую" операцию. Делать это вручную утомительно, но можно воспользоваться утилитой "mysqladmin". Её необходимо запустить с несколькими параметрами из консоли сервера, чтобы она раз в секунду сама показывала список очереди MySQL. Команда будет выглядеть так:
mysqladmin -h ip_адрес -P порт -u польз --verbose -p -i 1 processlist
Рассмотрим ключи в этой команде:
  • -h - ip адрес сервера (хоста) с базой данных. По умолчанию "localhost". В команде нужно заменить "ip_адрес" на ip адрес.
  • -P - порт базы данных. По умолчанию "3306". В команде нужно заменить "порт" на число.
  • -u - имя пользователя базы данных. По умолчанию "root". В команде нужно заменить "польз" на логин.
  • -p - запоминает введённый пароль.
  • -i - интервал в секундах между запросами.
  • --verbose - показать полную информацию о запросе. Иначе SQL строка запроса будет обрезаться, чтобы таблица вошла в терминал по ширине.
При выполнении команды каждую секунду будет распечатываться таблица со всеми запросами в очереди к базе. В этой таблице будут следующие столбцы:
  • id запроса
  • Имя пользователя
  • Имя базы данных
  • Хост (ip адрес)
  • Тип команды
  • Время исполнения
  • SQL строку запроса
  • Размер ответа
Обратите внимание на первый столбец "id запроса". Если необходимо оборвать запрос, то нужно воспользоваться командой kill, которой передаётся этот id запроса (целое число):
mysqladmin -h ip_адрес -P порт -u польз. kill id_запроса
В любом случае, даже при отображении очереди раз в секунду через mysqladmin, существует возможность не поймать с первого раза "тормозящий" запрос. Ведь длятся они меньше одной секунды. Поэтому придётся набраться терпения.
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб

⇡ наверх