CANCEL - Amazon Redshift

CANCEL

현재 실행 중인 데이터베이스 쿼리를 취소합니다.

CANCEL 명령은 실행 중인 쿼리의 프로세스 ID 또는 세션 ID가 필요하고 쿼리가 취소되었는지 검증하기 위한 확인 메시지를 표시합니다.

필수 권한

CANCEL에 필요한 권한은 다음과 같습니다.

  • 자신의 쿼리를 취소하는 슈퍼 사용자

  • 사용자의 쿼리를 취소하는 슈퍼 사용자

  • 사용자의 쿼리를 취소하는 CANCEL 권한이 있는 사용자

  • 자신의 쿼리를 취소하는 사용자

구문

CANCEL process_id [ 'message' ]

파라미터

process_id

Amazon Redshift 클러스터에서 실행 중인 쿼리를 취소하려면 취소하려는 쿼리에 해당하는 STV_RECENTS에서 pid(프로세스 ID)를 사용합니다.

Amazon Redshift Serverless 작업 그룹에서 실행 중인 쿼리를 취소하려면 취소하려는 쿼리에 해당하는 SYS_QUERY_HISTORY에서 session_id(프로세스 ID)를 사용합니다.

'message'

쿼리 취소 완료 시 표시되는 선택적 확인 메시지입니다. 메시지를 지정하지 않을 경우 Amazon Redshift는 기본 메시지를 확인으로 표시합니다. 이 메시지는 작은따옴표로 묶어야 합니다.

사용 노트

쿼리 ID를 지정해서는 쿼리를 취소할 수 없습니다. 반드시 쿼리의 프로세스 ID(PID) 또는 세션 ID를 지정해야 합니다. 사용자가 현재 실행하고 있는 쿼리만 취소할 수 있습니다. 수퍼유저는 모든 쿼리를 취소할 수 있습니다.

여러 세션의 쿼리가 동일한 테이블에 대한 잠금을 보유하는 경우 PG_TERMINATE_BACKEND 함수를 사용하여 세션 중 하나를 종료할 수 있습니다. 그러면 종료된 세션에서 실행 중이던 트랜잭션이 모든 잠금을 강제로 해제하여 트랜잭션을 롤백시킵니다. 현재 보유한 잠금을 보려면 STV_LOCKS 시스템 테이블을 쿼리합니다.

Amazon Redshift는 특정한 내부 이벤트 이후에 활성 세션을 다시 시작하고 새 PID를 할당할 수도 있습니다. PID가 변경된 경우 다음 오류 메시지가 나타날 수 있습니다.

Session <PID> does not exist. The session PID might have changed. Check the stl_restarted_sessions system table for details.

새 PID를 찾으려면 STL_RESTARTED_SESSIONS 시스템 테이블을 쿼리하고 oldpid 열에서 필터링하십시오.

select oldpid, newpid from stl_restarted_sessions where oldpid = 1234;

예시

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

select pid, starttime, duration, trim(user_name) as user, trim (query) as querytxt from stv_recents where status = 'Running'; pid | starttime | duration | user | querytxt -----+----------------------------+----------+----------+----------------- 802 | 2008-10-14 09:19:03.550885 | 132 | dwuser | select venuename from venue where venuestate='FL', where venuecity not in ('Miami' , 'Orlando'); 834 | 2008-10-14 08:33:49.473585 | 1250414 | dwuser | select * from listing; 964 | 2008-10-14 08:30:43.290527 | 326179 | dwuser | select sellerid from sales where qtysold in (8, 10);

쿼리 텍스트를 확인하여 어떤 프로세스 ID(PID)가 취소하려는 쿼리에 해당하는지 확인합니다.

다음 명령을 입력해 PID 802를 사용하여 해당 쿼리를 취소합니다.

cancel 802;

쿼리가 실행 중이던 세션에서 다음 메시지를 표시합니다.

ERROR: Query (168) cancelled on user's request

여기에서 168은 쿼리 ID입니다(쿼리 취소에 사용되는 프로세스 ID가 아님).

또는 기본 메시지 대신 표시할 사용자 지정 확인 메시지를 지정할 수 있습니다. 사용자 지정 메시지를 지정하려면 CANCEL 명령의 끝에 메시지를 작은따옴표로 묶습니다.

cancel 802 'Long-running query';

쿼리가 실행 중이던 세션에서 다음 메시지를 표시합니다.

ERROR: Long-running query