О web-разработке
и даже немного больше...

Как убить проблемный MySQL запрос

mysqlДовольно много интернет проектов в качестве хранения базы данных используют СУБД MySQL. При всём при этом, существуют и другие варианты выбора, такие как: MS SQL, mSQL, PostrgreSQL, Oracle, и т.д., но практический каждый хостер предоставляет услуги, в которые с большой вероятностью включена возможность использования баз данных MySQL. Такой популярности могло послужить множество весомых причин, одной из которых является то, что продукт имеет открытый исходный код, иными словами Open Source, который может получить каждый желающий (для версий под Windows существуют некоторые оговорки). Так же бытует мнение, что связка PHP/MySQL, или Perl/MySQL может дать большой показатель быстродействия, которое в иных случаях достигается гораздо сложнее. К тому же, PHP в стандартной сборке имеет встроенную поддержку MySQL.

Для создания запросов на сервер MySQL, так же как и в большинстве других СУБД, используется язык SQL. SQL язык является доминирующим языком для работы с базами данных, однако каждая база данных так же может иметь свои «диалекты» языка SQL, которые присущи конкретной разновидности СУБД.

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

Такие запросы, как правило, следует оптимизировать, но что делать, если нужно убрать запрос из очереди, который в силу своей замудрённости завис.
Есть способ, именуемый в народе «топорным» решением проблемы, это перезапуск MySQL сервера.

Есть и другой способ, который зачастую является более рациональным, это “убить” проблемный MySQL запрос. Сделать это можно посредством SSH, либо какой либо утилитой, к примеру, phpMyAdmin.

Убираем тяжелый MySQL запрос по SSH:

1. Заходим на сервер по SSH
2. Выполняем команду:

$ mysql –u USER –p

Вместо USER указываем пользователя MySQL
3. Вводим пароль от учетной записи USER
4. Выполняем команду

show processlist;

(не забываем указать точку с запятой на конце)
5. Узнаем ID проблемного запроса
6. Выполняем команду

Kill query 11223

Вместо 11223 указываем ID запроса, который нужно убрать.
В phpMyAdmin это делается ещё проще.

Убираем тяжелый MySQL запрос в phpMyAdmin:

1. Авторизуемся, выбираем базу данных
2. Открываем поле ввода команд (вкладка «SQL»)
3. Вводим команду

show processlist

4. Появляется список запросов, на нужном запросе жмем по ссылке «завершить»

Опубликован: 30.08.2013 г.

См. также:

Как подсчитать количество записей по месяцам в MySQL?
Работа с базой данных в WordPress
SQL-запросы для смены домена в WordPress
Как изменить тип таблиц в MySQL?
Изменение кодировки таблиц в базе MySQL
Фильтрация по полю DateTime в MySQL
Меняем пароль root в MySQL 5.7
Исправление ошибок в базе MySQL

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта