MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
KILL [CONNECTION | QUERY] processlist_id
mysqld への各接続は、個別のスレッドで実行されます。 スレッドは、KILL ステートメントで強制終了できます。
processlist_id
スレッドプロセッスリスト識別子は、INFORMATION_SCHEMA PROCESSLIST テーブルの ID カラム、SHOW PROCESSLIST 出力の Id カラム、およびパフォーマンススキーマ threads テーブルの PROCESSLIST_ID カラムから決定できます。 現在のスレッドの値は、CONNECTION_ID() 関数によって返されます。
KILL では、オプションの CONNECTION または QUERY 修飾子が許可されます。
KILL CONNECTION は修飾子のない KILL と同じです: 接続が実行されているステートメントを終了すると、指定された processlist_id に関連付けられている接続が終了します。
KILL QUERY は、接続が現在実行されているステートメントを終了しますが、接続自体はそのままになります。
強制終了できるスレッドを表示できるかどうかは、PROCESS 権限によって異なります:
PROCESS がない場合は、自分のスレッドのみを表示できます。
PROCESS では、すべてのスレッドを表示できます。
スレッドおよびステートメントを強制終了できるかどうかは、CONNECTION_ADMIN 権限および非推奨の SUPER 権限によって異なります:
CONNECTION_ADMIN または SUPER がない場合は、独自のスレッドおよびステートメントのみを強制終了できます。
CONNECTION_ADMIN または SUPER を使用すると、SYSTEM_USER 権限で実行されているスレッドまたはステートメントに影響を与える場合を除き、すべてのスレッドおよびステートメントを強制終了できます。独自のセッションには、SYSTEM_USER 権限も必要です。
mysqladmin processlist および mysqladmin kill コマンドを使用して、スレッドを検査および強制終了することもできます。
KILL を使用すると、そのスレッドのスレッド固有の強制終了フラグが設定されます。 強制終了フラグは次の一定の間隔でしかチェックされないため、ほとんどの場合、スレッドが終了するまでにある程度時間がかかることがあります。
SELECT 操作中、ORDER BY および GROUP BY ループでは、このフラグは行ブロックの読み取りのあとにチェックされます。 強制終了フラグが設定されている場合、このステートメントは中止されます。
テーブルのコピーを作成する ALTER TABLE 操作では、元のテーブルから読み取られたいくつかのコピーされた行について、強制終了フラグが定期的にチェックされます。 強制終了フラグが設定されていた場合、このステートメントは中止され、一時テーブルが削除されます。
KILL ステートメントは確認を待機せずに戻りますが、強制終了フラグチェックにより、妥当な時間内に操作が中断されます。 必要なクリーンアップを実行する操作を中止するには、時間もかかります。
UPDATE または DELETE 操作中、強制終了フラグは、ブロックが読み取られるたび、および行が更新または削除されるたびにチェックされます。 強制終了フラグが設定されている場合、このステートメントは中止されます。 トランザクションを使用していない場合、変更はロールバックされません。
GET_LOCK() は中止され、NULL を返します。
このスレッドがテーブルロックハンドラ内にある場合 (状態: Locked)、そのテーブルロックはすばやく中止されます。
このスレッドが書き込みコールでディスクの空き容量を待機している場合、その書き込みは「ディスク領域不足」というエラーメッセージで中止されます。
EXPLAIN ANALYZE は異常終了し、出力の最初の行を出力します。 これは、MySQL 8.0.20 以降で機能します。
MyISAM テーブルに対する REPAIR TABLE または OPTIMIZE TABLE 操作を強制終了すると、テーブルが破損して使用できなくなります。 このようなテーブルに対する読み取りまたは書き込みはすべて、そのテーブルをふたたび最適化または修復するまで失敗します (割り込みはなし)。