데이터베이스

[DB] Isolation

KyooDong 2021. 4. 25. 12:08
728x90

Isolation

트랜잭션은 DML을 만나면 암묵적으로 시작

 

명령어

set transaction

commit

rollback

savepoint : abort 시 이 시점으로 돌아감

rollback to savepoint

 

consistency vs performance

Read-only 트랜잭션 : 대략적인 추정 결과를 내놓는 대신 성능을 향상시키는 방법을 사용 = Consistency level 이 낮음

 

Degree-two consistency

Two-phase locking protocol 은 phase 2가 되어야 unlock 이 가능하지만 Degree-two consistency 는 S-lock 에 한하여 중간중간에도 unlock 이 가능

주로 Cursor 에 사용됨 = 읽을 때만 S-lock 을 걸어버리고, 데이터의 전달이 마무리되면 S-lock 을 품

 

Isolation level

  • Serializable : default = 가장 강함
  • Repeatable read : commit 된 레코드만 읽을 수 있으므로 Consistency 를 보장함, 팬텀 현상 발생 가능
    여러 번 읽어도 같은 결과를 리턴함 : mysql 기본
  • Read committed : degree two consistency 를 사용 : 커밋된 것만 읽으나 S-lock 을 바로 풀어버려서 문제의 여지가 있음 -> 여러 번 읽으면 다른 결과를 리턴할 수 있음 : 보통 상업 디비는 이게 기본임
  • Read uncommitted : 커밋 안된것도 읽음

 

명령어

Set transaction (read only | read write) isolation level (Serializable | repeatable read | read committed | read uncommitted);