PG_CANCEL_BACKEND - Amazon Redshift

PG_CANCEL_BACKEND

쿼리를 취소합니다. PG_CANCEL_BACKEND는 기능 면에서 CANCEL 명령과 동일합니다. 사용자가 현재 실행하고 있는 쿼리를 취소할 수 있습니다. 수퍼유저는 어떠한 쿼리든 취소할 수 있습니다.

구문

pg_cancel_backend( pid )

인수

pid

취소할 쿼리의 프로세스 ID(PID)입니다. 쿼리 ID를 지정해서는 쿼리를 취소할 수 없습니다. 반드시 쿼리의 프로세스 ID를 지정해야 합니다. INTEGER 값이 필요합니다.

반환 타입

None

사용 노트

다수의 세션에서 동일한 테이블에 대해 쿼리를 실행하면서 잠금 현상이 발생하는 경우에는 PG_TERMINATE_BACKEND 함수를 사용해 세션 중 하나를 종료할 수 있습니다. 그러면 종료된 세션에서 실행 중이던 트랜잭션이 모든 잠금을 강제로 해제하여 트랜잭션을 롤백시킵니다. PG__LOCKS 카탈로그 테이블에 대해 쿼리를 실행하여 현재 잠금 상태를 확인합니다. 쿼리가 트랜잭션 블록(BEGIN ... END) 내부여서 취소할 수 없는 경우에는 PG_TERMINATE_BACKEND 함수를 사용하여 쿼리가 실행 중인 세션을 종료할 수 있습니다.

예시

현재 실행 중인 쿼리를 취소하려면 먼저 취소하려는 쿼리에 대한 프로세스 ID를 검색하십시오. 현재 실행 중인 모든 쿼리의 프로세스 ID를 확인하려면 다음 명령을 실행합니다.

SELECT pid, TRIM(starttime) AS start, duration, TRIM(user_name) AS user, SUBSTRING(query,1,40) AS querytxt FROM stv_recents WHERE status = 'Running'; +-----+------------------------+----------+--------+-----------------------------+ | pid | starttime | duration | user | querytxt | +-----+------------------------+----------+--------+-----------------------------+ | 802 | 2013-10-14 09:19:03.55 | 132 | dwuser | select venuename from venue | | 834 | 2013-10-14 08:33:49.47 | 1250414 | dwuser | select * from listing; | | 964 | 2013-10-14 08:30:43.29 | 326179 | dwuser | select sellerid from sales | +-----+------------------------+----------+--------+-----------------------------+

프로세스 ID 802로 쿼리를 취소하려면 다음 예제를 사용합니다.

SELECT PG_CANCEL_BACKEND(802);