MySQL. Просмотр запросов в реальном времени

В Linux существует команда «watch», которая позволяет запускать команды, стоящие после неё с определённым интервалом. Так можно почти в реальном времени отследить значения в выводе. К сожалению, иногда её неудобно или невозможно использовать для просмотра запросов MySQL. Но это ещё можно делать через mysqladmin.

Для просмотра всех исполняемых запросов из очереди в MySQL можно выполнить команду:

SELECT * FROM information_schema.processlist;

Но запросы часто выполняются намного быстрее секунды. Поэтому придётся запускать команду раз десять, чтобы поймать хотя бы один запрос, который находится в процессе выполнения. И чтобы не молотить пальцами по клавиатуре, можно воспользоваться утилитой «mysqladmin», запустив её с параметром «processlist» и некоторыми другими:

mysqladmin -h ip_адрес -P порт -u польз. —verbose -p -i 1 processlist

Разберём все ключи mysqladmin в этой команде:

  • -h — задаёт адрес сервера (хоста) с базой данных. По умолчанию «localhost».
  • -P — указывает порт сервера, который прослушивается базой данных. По умолчанию «3306».
  • -u — содержит имя пользователя базы данных, от имени которого надо выполнять запросы. По умолчанию «root».
  • -p — заставляет mysqladmin запоминать введённый пароль, чтобы не переспрашивал. Можно не использовать, если пароль указан в файле «.my.conf», в домашней папке пользователя.
  • -i — задаёт интервал в секундах между запросами.
  • —verbose — выводит полную информацию о запросе. Иначе SQL строка запроса будет обрезаться, чтобы таблица вошла в терминал по ширине.

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

  • id запроса
  • Имя пользователя
  • Имя базы данных
  • Хост (ip адрес)
  • Тип команды
  • Время исполнения
  • SQL строку запроса
  • Размер ответа

Чтобы завершить повисший запрос можно воспользоваться командой kill, которой передаётся id запроса (который узнаётся из первого столбца таблицы «processlist»):

mysqladmin -h ip_адрес -P порт -u польз. kill id_запроса



2021-05-30T11:17:44
Сервер