PG_TERMINATE_BACKEND - Amazon Redshift

PG_TERMINATE_BACKEND

세션을 종료합니다. 사용자가 소유하고 있는 세션을 종료할 수 있으며, 그 밖에 수퍼유저라면 모든 세션을 종료할 수 있습니다.

구문

pg_terminate_backend( pid )

인수

pid

종료할 세션의 프로세스 ID입니다. INTEGER 값이 필요합니다.

반환 타입

None

사용 노트

동시 접속 제한에 가깝게 도달하면 PG_TERMINATE_BACKEND를 사용하여 유휴 세션을 종료하고 접속할 수 있는 여유 세션을 확보할 수 있습니다. 자세한 내용은 Amazon Redshift의 제한을 참조하세요.

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

쿼리가 트랜잭션 블록(BEGIN … END) 내부에 있지 않으면 CANCEL 명령 또는 PG_CANCEL_BACKEND 함수를 사용해 쿼리를 취소할 수 있습니다.

예시

SVV_TRANSACTIONS 테이블에 대해 쿼리를 실행하여 현재 트랜잭션에 적용되어 있는 모든 잠금을 표시하려면 다음 예제를 사용합니다.

SELECT * FROM svv_transactions; +-----------+--------+-------+------+---------------------+-----------------+----------------------+----------+---------+ | txn_owner | txn_db | xid | pid | txn_start | lock_mode | lockable_object_type | relation | granted | +-----------+--------+-------+------+---------------------+-----------------+----------------------+----------+---------+ | rsuser | dev | 96178 | 8585 | 2017-04-12 20:13:07 | AccessShareLock | relation | 51940 | true | | rsuser | dev | 96178 | 8585 | 2017-04-12 20:13:07 | AccessShareLock | relation | 52000 | true | | rsuser | dev | 96178 | 8585 | 2017-04-12 20:13:07 | AccessShareLock | relation | 108623 | true | | rsuser | dev | 96178 | 8585 | 2017-04-12 20:13:07 | ExclusiveLock | transactionid | | true | +-----------+--------+-------+------+---------------------+-----------------+----------------------+----------+---------+

잠금이 설정된 세션을 종료하려면 다음 예제를 사용합니다.

SELECT PG_TERMINATE_BACKEND(8585);