KILL thread_id
Каждое соединение с mysqld
запускается в отдельном потоке. При помощи
команды SHOW PROCESSLIST
можно просмотреть список запущенных потоков, а
при помощи команды KILL thread_id
- удалить поток.
Если у вас есть привилегия PROCESS
, можно просмотреть все потоки. Обладая
привилегией SUPER
, можно удалять любые потоки. В противном случае можно
просматривать и удалять только свои собственные потоки.
Для просмотра и удаления потоков можно также применять команды mysqladmin processlist
и mysqladmin kill
.
При использовании команды KILL
для потока устанавливается специальный флаг
kill flag
.
В большинстве случаев удаление потока занимает некоторое время, поскольку этот флаг проверяется с определенным интервалом.
В циклах
SELECT
,ORDER BY
иGROUP BY
флаг проверяется только после считывания блока строк. Если установлен флаг удаления, то выполнение оператора будет отменено.При выполнении команды
ALTER TABLE
флаг удаления проверяется перед считыванием каждого блока строк из исходной таблицы. Если флаг установлен, то выполнение команды отменяется и временная таблица удаляется. При выполнении командUPDATE
иDELETE
флаг удаления проверяется после каждого считывания блока, а также после каждого обновления или удаления строки. Если флаг удаления установлен, то выполнение оператора отменяется. Обратите внимание: если не используются транзакции, то отменить изменения будет невозможно!GET_LOCK()
будет отменен при помощиNULL
.Поток
INSERT DELAYED
быстро сбросит все строки, которые он содержит в памяти и будет удален.Если поток находится в заблокированной таблице (состояние:
Locked
), то блокировка таблицы будет быстро отменена.Если поток ожидает освобождения дискового пространства в запросе write, запись будет отменена с выдачей сообщения о переполнении диска.