1. 트랜잭션 수행

   psql> begin;

        > select now();

        > select now();

        > commit;

        => 동일한 time

 

2. read only 

  psql> show transaction_read_only;

       > begin transaction read only;

       > select now();

       > commit and chain;    (# 다음 트랜잭션도 read only로 진행)

       > select now();

       > commit;                 (# read only 종료)

 

 

3. savepoint 

  트랜잭션이 long일때 error 발생시 특정 부분으로 돌아가고자 할때

  

  psql> begin;

       > select 1;

       > savepoint a;

       > select 1/0;

       > rollback to savepoint a;            

       > select 1;

       > commit;        ( savepoint 제거됨 )

 

 

4. transaction DDL

  postgresql은 ddl에 대해 transaction 형태를 지원함 

  (transaction으로 alter를 수행했다가 다시 rollback이 가능함)

   

  psql> begin;

       > create table test (name varchar(10));

       > alter table test alter column name type varchar(20);

       > rollback;

 

5. transaction isolation level

  1) read committed   (default)

     select 한 시점에 snapshot(undo) 정보로 데이터 제공

  2) repeatable read

     트랜잭션 동안 동일한 데이터 제공 ( 연관된 data가 commit 되든 안되든 간에 )

  3) Serializable

     특정 데이터 read 또는 변경시 한 사용자만 허용

  4) read uncommited ( postgresql에서는 제공하지 않음 )

     사용자에게 변경중인 데이터(uncommited) 제공 

 

 

 

'RDB > PostreSQL' 카테고리의 다른 글

PostgreSQL 12 스토리지 optimization and cleanup  (0) 2020.04.29
PostgreSQL 12 lock  (0) 2020.04.27
PostgreSQL 12에 신규 기능  (0) 2020.04.20
PostgreSQL 함수  (0) 2020.03.23
PostgreSQL 병렬 쿼리  (0) 2020.03.23

+ Recent posts