본문 바로가기
CS 개념정리/데이터베이스(DB)

[CS] 데이터베이스 이론 정리(4)

by 반오십 코린이 2022. 12. 26.
728x90

Transaction isolation

 

  • Acid의 원칙을 타이트하게 지키면 동시성에 대한 퍼포먼스가 너무 떨어진다.
  • 그래서 isolation level 별로 차등을 두어 동시성에 대한 이점을 가질 수 있게 한다.

 

Read Uncommited

  • 2개의 Transaction(A, B)이 있다고 가정했을 때 A가 수행하는 쿼리가 마무리되지 않았는데(commit 하지 않음) B가 A의 값을 채가는 경우
  • Same Data를 같은 시간에 볼 수 있음

Read Commited

  • 하나의 Transaction(A)이 commit이 되어야 다른 Transaction(A)이 커밋된 것(A)을 읽어갈 수 있음 
  • Same Data를 같은 시간에 볼 수 없음

Reapeatable Read

  • Read Commited를 기본으로 하되, Transaction A에서 데이터를 가공해서 NUM 값을 삭제 혹은 값 변경 해도 Transaction B가 먼저 데이터를 확인했으면(A가 데이터 가공을 시작하기 전에) Transaction B에게는 그대로 보인다.
  • Transaction A에서 데이터를 추가했을 경우 B에게 추가되어 보인다.
  • ※ 새롭게 추가된 데이터는 B에게 보이되, 수정, 삭제한 데이터(A에서)는 (B가) 가져왔던 그대로 보이게 된다.

Serializable

  • Transaction이 실행 중일 때 중간에 끼어드는 거 금지.
  • 하나가 다 끝났을 때 접근가능하게 함!
  • 데이터 오류는 가장 적지만 시간이 오래 걸린다는 점

Data Read Problems Level - 트랜잭션이 동시 실행 되면?

 

Dirty Read (Read)

  • Transaction 작업이 완료되지 않았는데 (커밋하지 않았는데) 데이터를 읽을 경우

Non-repeatable Read (Modify, Delete)

  • 한 Transaction이 같은 쿼리 2번 실행 했는데 그 사이에 다른 Transaction이 접근해서 수정, 삭제해서 Consistency 망가짐 - Dirty Read의 연장선

Phantom Read (Insert)

  • 예전에 없던게 새로 추가된 경우


Commit

  • Transaction이 마무리 되었을 때 complete하는 작업
  • db 변경은 db에 영구적이게 적용된다. - durability

Rollback

  • Commit된 것을 되돌려 주는 과정
  • 0으로 나누거나 제약조건 위배는 따로 설정하지 않아도 Rollback을 야기한다.
728x90