LOCK - Amazon Redshift

LOCK

데이터베이스 테이블에 대한 액세스를 제한합니다. 이 명령은 트랜잭션 블록 내에서 실행될 때만 의미가 있습니다.

LOCK 명령은 "ACCESS EXCLUSIVE" 모드에서 테이블 수준 잠금을 통해, 필요한 경우 서로 상충하는 잠금이 해제될 때까지 대기합니다. 이런 식으로 테이블을 명시적으로 잠그면 다른 트랜잭션 또는 세션에서 테이블에 대한 읽기 및 쓰기 작업을 시도할 때 이런 작업이 대기 상태로 전환됩니다. 한 사용자에 의해 생성되는 명시적 테이블 잠금은 일시적으로 다른 사용자가 그 테이블에서 데이터를 선택하거나 테이블로 데이터를 로드하지 못하게 막습니다. LOCK 명령을 포함한 트랜잭션이 완료되면 잠금이 해제됩니다.

쓰기 작업과 같이, 테이블을 참조하는 명령에 의해 덜 제한적인 테이블 잠금이 암시적으로 이루어집니다. 예를 들어, 한 사용자가 테이블을 업데이트하는 동안 다른 사용자가 테이블에서 데이터 읽기를 시도할 경우 이미 커밋된 데이터의 스냅샷이 읽히게 됩니다. (경우에 따라 쿼리가 직렬화 가능 격리 규칙을 위반한 경우에는 중지됩니다.) 동시 쓰기 작업 관리 섹션을 참조하세요.

DROP TABLE 및 TRUNCATE와 같은 일부 DDL 작업은 배타적 잠금을 생성합니다. 이런 작업으로 인해 데이터를 읽을 수 없습니다.

잠금 충돌이 발생하는 경우 Amazon Redshift는 충돌이 발생한 트랜잭션을 시작한 사용자에게 알리는 오류 메시지를 표시합니다. 잠금 충돌을 수신한 트랜잭션은 중지됩니다. 잠금 충돌이 발생할 때마다 Amazon Redshift가 STL_TR_CONFLICT 테이블에 항목을 작성합니다.

구문

LOCK [ TABLE ] table_name [, ...]

파라미터

TABLE

선택적 키워드입니다.

table_name

잠글 테이블의 이름입니다. 테이블 이름의 쉼표로 구분된 목록을 사용하여 두 개 이상의 테이블을 잠글 수 있습니다. 뷰를 잠글 수 없습니다.

begin; lock event, sales; ...