DBAtlas · Атлас эксплуатации баз данных

Завершить (kill) сессию / запрос

Oracle

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

Возьмите значения sid и serial# из v$session. 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> — это столбец Id в processlist.

SQL Server

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

KILL откатывает открытую транзакцию; для больших транзакций откат может занять много времени.

MongoDB

db.killOp(<opid>)

Возьмите значение opid из поля opid в выводе db.currentOp().

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 →