BEGIN - Amazon Redshift

BEGIN

트랜잭션을 시작합니다. START TRANSACTION과 동의어입니다.

트랜잭션은 하나의 명령으로 구성되든 여러 명령으로 구성되든, 단 하나의 논리적 작업 단위입니다. 일반적으로 한 트랜잭션에 있는 모든 명령은 transaction_snapshot_begin 시스템 구성 파라미터에 대해 설정된 값으로 시작 시간이 결정되는 데이터베이스의 스냅샷에서 실행됩니다.

기본적으로 개별 Amazon Redshift 작업(쿼리, DDL 문, 로드)은 데이터베이스에 자동으로 커밋됩니다. 이후의 작업이 완료될 때까지 작업에 대한 커밋을 일시 중단하려는 경우 BEGIN 문으로 트랜잭션을 열고 필요한 명령을 실행한 다음, COMMIT 또는 END 문으로 트랜잭션을 닫아야 합니다. 필요한 경우 ROLLBACK 문을 사용하여 진행 중인 트랜잭션을 중지할 수 있습니다. 이 동작에 대한 예외가 TRUNCATE 명령으로, 명령이 실행되는 트랜잭션을 커밋하고 롤백은 불가능합니다.

구문

BEGIN [ WORK | TRANSACTION ] [ ISOLATION LEVEL option ] [ READ WRITE | READ ONLY ] START TRANSACTION [ ISOLATION LEVEL option ] [ READ WRITE | READ ONLY ] Where option is SERIALIZABLE | READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ Note: READ UNCOMMITTED, READ COMMITTED, and REPEATABLE READ have no operational impact and map to SERIALIZABLE in Amazon Redshift. You can see database isolation levels on your cluster by querying the stv_db_isolation_level table.

파라미터

Work

선택적 키워드입니다.

TRANSACTION

선택적 키워드: WORK와 TRANSACTION은 동의어입니다.

ISOLATION LEVEL SERIALIZABLE

직렬화 가능 격리가 기본적으로 지원되므로, 트랜잭션의 동작은 이 구문이 명령문에 포함되어 있는지에 상관없이 동일합니다. 자세한 내용은 동시 쓰기 작업 관리 단원을 참조하십시오. 다른 격리 수준은 지원되지 않습니다.

참고

SQL 표준에서는 더티 읽기(트랜잭션이 동시 커밋되지 않은 트랜잭션에 의해 쓰인 데이터를 읽는 경우), 반복 불가능한 읽기(트랜잭션이 이전에 읽은 데이터를 다시 읽었는데 처음 읽은 이후에 커밋된 다른 트랜잭션에 의해 해당 데이터가 변경되었음을 발견하는 경우), 가상 읽기(트랜잭션이 쿼리를 다시 실행하고, 검색 조건을 만족하는 행 집합을 반환한 다음, 최근에 커밋된 다른 트랜잭션 때문에 행 집합이 변경된 것을 발견하는 경우)를 방지하기 위해 네 가지 트랜잭션 격리 수준을 정의합니다.

  • 커밋되지 않은 데이터 읽기: 더티 읽기, 반복 불가능한 읽기 및 가상 읽기가 가능합니다.

  • 커밋된 데이터 읽기: 반복 불가능한 읽기 및 가상 읽기가 가능합니다.

  • 반복 가능한 읽기: 가상 읽기가 가능합니다.

  • 직렬화 가능: 더티 읽기, 반복 불가능한 읽기 및 가상 읽기를 방지합니다.

4가지 트랜잭션 격리 수준 중 어떤 수준이든 사용할 수 있지만 Amazon Redshift는 모든 격리 수준을 직렬화 가능한 수준으로 처리합니다.

READ WRITE

트랜잭션 읽기 및 쓰기 권한을 제공합니다.

READ ONLY

트랜잭션 읽기 전용 권한을 제공합니다.

다음 예에서는 직렬화 가능 트랜잭션 블록을 시작합니다.

begin;

다음 예에서는 직렬화 가능 격리 수준과 읽기 및 쓰기 권한으로 트랜잭션 블록을 시작합니다.

begin read write;