KILL thread_id
mysqld
の各接続はスレッドごとに行われます。SHOW
PROCESSLIST
コマンドで、どのスレッドが使用されているか知ることができます。また、KILL
thread_id
コマンドで、スレッドを強制終了できます。
PROCESS
権限があれば、すべてのスレッドを照会することができます。
SUPER
権限があれば、すべてのスレッドを強制終了できます。
上記の権限がない場合は、自分のスレッドだけ照会および強制終了できます。
mysqladmin processlist
コマンドおよび
mysqladmin kill
コマンドでも、スレッドを確認および強制終了できます。
注意: 現在のところ、組み込み
MySQL サーバライブラリでは KILL
を使用できません。組み込みサーバは、ホストアプリケーションのスレッド内部で実行するだけで、独自の接続スレッドは作成しません。
KILL
を実行すると、スレッド固有の kill
flag
がスレッドに設定されます。
キルフラグは一定間隔でチェックされるため、多くの場合、スレッドが終了するまでにしばらく時間がかかります。
SELECT
、ORDER
BY
、GROUP BY
の各ループでは、レコードのブロックが 1
つ読み取られるたびにフラグがチェックされます。キルフラグが設定されていれば、ステートメントは停止します。
ALTER TABLE
を実行した場合、オリジナルのテーブルからレコードの各ブロックが読み取られる前に、キルフラグがチェックされます。キルフラグが設定されていればコマンドは停止し、テンポラリテーブルは削除されます。
UPDATE
または
DELETE
を実行した場合、各ブロックが読み取られた後、および更新レコードまたは削除レコードの後で、キルフラグがチェックされます。キルフラグが設定されていれば、ステートメントは停止します。注意:
トランザクションを使用していない場合、変更はロールバックされません。
GET_LOCK()
は NULL
で停止します。
INSERT DELAYED
スレッドは、そのメモリにあるすべてのレコードをすばやくフラッシュし、終了します。
スレッドがテーブルロックハンドラ内にある場合(Locked
状態)、テーブルロックがすばやく解除されます。
スレッドが write
コールで空きディスク容量を待っている場合、disk
full
のエラーメッセージで書き込みが停止します。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.