15.7.8.4 Заявление KILL
KILL [CONNECTION | QUERY] processlist_id
Каждое подключение к mysqld выполняется в отдельном потоке. Вы можете остановить поток с помощью заявления KILL
.processlist_id
Идентификаторы процессов потоков можно определить по столбцу ID таблицы INFORMATION_SCHEMA PROCESSLIST, столбцу Id вывода SHOW
PROCESSLIST и столбцу PROCESSLIST_ID таблицы Performance Schema threads. Значение для текущего потока возвращается функцией CONNECTION_ID().
Заявление KILL допускает необязательный модификатор CONNECTION или QUERY:
KILL CONNECTIONэквивалентноKILLбез модификатора: он прерывает подключение, связанное с заданнымprocesslist_id, после завершения любого выполняемого запроса.KILL QUERYпрерывает запрос, который выполняется подключением в данный момент, но оставляет само подключение нетронутым.
Возможность увидеть, какие потоки доступны для прерывания, зависит от привилегии PROCESS:
Возможность прерывания потоков и запросов зависит от привилегии CONNECTION_ADMIN и устаревшей привилегии SUPER:
Без привилегии
CONNECTION_ADMINилиSUPERвы можете прерывать только свои собственные потоки и запросы.С привилегией
CONNECTION_ADMINилиSUPERвы можете прерывать все потоки и запросы, за исключением случаев, когда поток или запрос выполняются с привилегиейSYSTEM_USER, в этом случае вашей сессии дополнительно требуется привилегияSYSTEM_USER.
Вы также можете использовать команды mysqladmin processlist и mysqladmin kill для проверки и прерывания потоков.
При использовании KILL, для потока устанавливается флаг прерывания. В большинстве случаев может потребоваться некоторое время для завершения потока, поскольку флаг прерывания проверяется только через определенные промежутки времени:
Во время операций
SELECT, для цикловORDER BYиGROUP BY, флаг проверяется после чтения блока строк. Если флаг прерывания установлен, запрос прерывается.-
Операции
ALTER TABLE, создающие копию таблицы, периодически проверяют флаг прерывания для каждой скопированной строки, считанной из исходной таблицы. Если флаг прерывания был установлен, запрос прерывается, и временная таблица удаляется.Заявление
KILLвозвращает результат без ожидания подтверждения, но проверка флага прерывания прерывает операцию в разумно короткий срок. Прерывание операции для выполнения необходимой очистки также занимает некоторое время. Во время операций
UPDATEилиDELETE, флаг прерывания проверяется после каждого прочитанного блока и после каждой обновленной или удаленной строки. Если флаг прерывания установлен, запрос прерывается. Если транзакции не используются, изменения не отменяются.GET_LOCK()прерывается и возвращаетNULL.Если поток ожидает освобождения дискового пространства в вызове записи, запись прерывается с сообщением об ошибке «диск заполнен».
EXPLAIN ANALYZEпрерывается и выводит первую строку вывода.
Прерывание операции REPAIR TABLE или OPTIMIZE TABLE над таблицей MyISAM приводит к тому, что таблица становится поврежденной и непригодной для использования. Все чтения или записи в такую таблицу завершаются ошибкой, пока вы не оптимизируете или не восстановите её (без прерывания).
© 2025 Oracle
Licensed under the GPLv2 License.