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