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
'CS 개념정리 > 데이터베이스(DB)' 카테고리의 다른 글
[CS] 데이터베이스 이론 정리(5) (0) | 2023.01.09 |
---|---|
[CS] 데이터베이스 이론 정리(3) (0) | 2022.11.28 |
[CS] 데이터베이스 이론 정리(2) (0) | 2022.11.08 |
[CS] 데이터베이스 이론 정리(1) (0) | 2022.11.02 |