KILL [CONNECTION | QUERY] thread_id
Each connection to mysqld runs in a
separate thread. You can see which threads are running with
the SHOW PROCESSLIST
statement and kill a
thread with the KILL
thread_id
statement.
KILL
allows the optional
CONNECTION
or QUERY
modifier:
KILL CONNECTION
is the same as
KILL
with no modifier: It terminates
the connection associated with the given
thread_id
.
KILL QUERY
terminates the statement
that the connection is currently executing, but leaves the
connection itself intact.
If you have the PROCESS
privilege, you can
see all threads. If you have the SUPER
privilege, you can kill all threads and statements. Otherwise,
you can see and kill only your own threads and statements.
You can also use the mysqladmin processlist
and mysqladmin kill commands to examine and
kill threads.
Note: You cannot use
KILL
with the Embedded MySQL Server
library, because the embedded server merely runs inside the
threads of the host application. It does not create any
connection threads of its own.
When you use KILL
, a thread-specific kill
flag is set for the thread. In most cases, it might take some
time for the thread to die, because the kill flag is checked
only at specific intervals:
In SELECT
, ORDER BY
and GROUP BY
loops, the flag is checked
after reading a block of rows. If the kill flag is set,
the statement is aborted.
During ALTER TABLE
, the kill flag is
checked before each block of rows are read from the
original table. If the kill flag was set, the statement is
aborted and the temporary table is deleted.
During UPDATE
or
DELETE
operations, the kill flag is
checked after each block read and after each updated or
deleted row. If the kill flag is set, the statement is
aborted. Note that if you are not using transactions, the
changes are not rolled back.
GET_LOCK()
aborts and returns
NULL
.
An INSERT DELAYED
thread quickly
flushes (inserts) all rows it has in memory and then
terminates.
If the thread is in the table lock handler (state:
Locked
), the table lock is quickly
aborted.
If the thread is waiting for free disk space in a write
call, the write is aborted with a “disk full”
error message.
Warning: Killing a
REPAIR TABLE
or OPTIMIZE
TABLE
operation on a MyISAM
table results in a table that is corrupted and unusable.
Any reads or writes to such a table fail until you
optimize or repair it again (without interruption).