Spec-Zone .ru
спецификации, руководства, описания, API
|
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
statement. thread_id
KILL
permits an 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.
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.
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).