DBAtlas · データベース運用アトラス

セッション/クエリを終了(kill)

Oracle

ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
-- To cancel only the running statement (18c+):
-- ALTER SYSTEM CANCEL SQL 'sid,serial#';

v$session から sid と serial# の値を取得する。IMMEDIATE はロールバックを即座に開始する。

PostgreSQL

-- Cancel only the running query (the session stays):
SELECT pg_cancel_backend(pid);
-- Close the session entirely:
SELECT pg_terminate_backend(pid);

まず pg_cancel_backend を試し、効かなければ pg_terminate_backend を使用する。

MySQL

-- Kill only the query:
KILL QUERY <id>;
-- Close the connection entirely:
KILL CONNECTION <id>;

<id> の値は processlist の Id 列。

SQL Server

KILL <session_id>;
-- To see rollback progress:
-- KILL <session_id> WITH STATUSONLY;

KILL はオープン中のトランザクションをロールバックする。大きなトランザクションではロールバックに長時間かかることがある。

MongoDB

db.killOp(<opid>)

opid の値は db.currentOp() 出力の opid フィールドから取得する。

Redis

CLIENT KILL ID <client-id>
# or by address: CLIENT KILL ADDR 10.0.0.5:6379

client-id は CLIENT LIST で取得する。既に実行中の単一コマンドは中断できない(Lua スクリプトは例外: SCRIPT KILL)ため、完了を待つ必要がある。BLPOP/XREAD BLOCK などのブロッキングコマンドで待機中のクライアントを接続を切らずに解放するには CLIENT UNBLOCK <client-id> [TIMEOUT|ERROR] を使用する。CLIENT UNPAUSE は CLIENT PAUSE で一時停止したクライアントを再開するだけ。

DBAtlas で開く →