개요
해당 글은 쉬운코드님의 https://www.youtube.com/watch?v=DwRN24nWbEc 강의를 시청하고 개인적으로 정리한 글입니다 :)
트랜잭션 동시성 제어
K 가 H에게 20만원을 이체하고 H도 본인 계좌에 30만원을 입금한다면 여러 형태의 트랜잭션 실행이 가능할 수 있음
Schedule
여러 transaction 들이 동시에 실행될 때 각 transaction 에속한 operation 들의 실행 순서, 각 transaction 내의 operation 들의 순서는 바뀌지 않음
- 트랜잭션 1가 K 자원을 읽을때 : r1(K)
- 트랜잭션 1가 K 자원을 쓸때 : w1(K)
Serial Schedule
transaction 들이 겹치지 않고 순차적으로 실행될때
성능
어떠한 operation 을 수행하고 있을때 (I/O) 작업, CPU 는 유휴상태지만 순서를 보장하기위해 어떠한 동작을 하지도 않음
단점
한번에 하나의 트랜잭션만 실행해서 데이터의 무결성은 지킬 수 있지만 좋은 성능을 낼 수 없음 (현실적으로 사용할 수 없음)
Nonserial Schedule
transaction 들이 겹쳐서 실행되는 schedule, I/O 작업을 하는 도중 또다른 transaction 을 실행시킴
트랜잭션들이 겹쳐서 실행되기 때문에 동시성이 높아져서 같은 시간 동안 더 많은 transaction 들을 처리할 수 있음
단점
transaction 들이 어떤 형태로 겹치는 지 몰라 이상한 결과를 나오게 할 수 있다.
고민거리
- 성능 때문에 여러 transaction 들을 겹쳐서 실행할 수 있으면 좋다, 하지만 결과는 이상하면 안된다.
- 해결책: conflict serializable 한 nonserial schedule 을 허용하자
- RDBMS 에서 어떻게 판단할 수 있는가
- 구현: 여러 transaction 을 동시에 실행해도 schedule 이 conflict serializable 하도록 보장하는 프로토콜을 적용
- 해결책: conflict serializable 한 nonserial schedule 을 허용하자
아이디어
serial schedule 과 결과는 동일한 nonserial schedule 을 실행하면 되겠다. schedule 이 동일하다라는 의미를 정의할 필요가 있음
Conflict
conflict operation 은 순서가 바뀌면 결과도 바뀜
만족 조건
- 서로 다른 transaction 소속
- 같은 데이터에 접근
- 최소 하나는 write operation
Read Write conflict
서로 다른 트랜잭션이 같은 데이터에 접근할때 최소하나는 write operation 을 하는 경우 (read-write conflict, write-write conflict)
Conflict equivalent for two schedules
serial schedule 과 conflict equivalent 할때 conflict serializable 함 어떤 serial schedule 과도 conflict equivalent 하지 않으면 이는 serializable 할 수 없음
두 조건 모두 만족하면 conflict equivalent
- 두 schedule은 같은 transaction 들을 가진다
- 어떤 conflicting operations 의 순서도 양쪽 schedule 모두 동일하다
- 이게 모든 conflict operation 에서 동일해야함
concurrency control makes any schedule serializable
'데이터베이스' 카테고리의 다른 글
[데이터베이스] - DBCP(Database Connection Pool) (0) | 2024.01.10 |
---|---|
[데이터베이스] - 2PL 과 LOCK (0) | 2024.01.04 |
[데이터베이스] - 트랜잭션 동시성 제어 (2) (1) | 2024.01.04 |
[데이터베이스] - 최적화 방법 11가지 (1) | 2024.01.02 |
[Database] SQL vs NOSQL (1) | 2023.12.27 |