데이터베이스/RDB
데이터베이스 동시성 제어 (1)
정재익
2025. 12. 23. 00:41
스케줄은 여러 트랜잭션이 동시에 실행될때 각 트랜잭션에 속한 명령의 실행순서
시리얼 스케줄 (순차 스케줄) 트랜잭션들이 겹치지않고 한번에 하나씩 실행되는 스케줄
비정상데이터가 생길일은 없지만 한번에 하나씩 실행되어서 성능이 안좋음 현실적으로 안쓰임
I/O 작업이 끝날때까지 CPU가 대기
논시리얼 스케줄 (비 순차 스케줄) 트랜잭션들이 겹쳐서(인터리빙) 되어 실행되는 스케줄
I/O 작업이 끝나지않아도 다른 트랜잭션 실행 CPU 놀지않음
같은시간동안 더 많은 트랜잭션 처리가능
비정상데이터 생길 가능성있음
논시리얼 스케줄에서 성능을 챙기는 방법
Conflict란
두가지의 명령이 있을때
1. 각 명령이 서로 다른 트랜잭션이다
2. 같은 데이터에 접근한다
3. 최소하나는 write명령이다
세가지를 만족하면 두 명령은 컨플릭트하다 라고함
컨플릭트명령은 순서가 바뀌면 결과도 바뀐다
컨플릭트 동등성이란
두 스케줄이 있을때
1. 두 스케줄은 같은 트랜잭션을 가진다.
2. 모든 컨플릭트 명령들의 순서가 양쪽 스케줄에 대해 동일하다
두가지를 만족하면 두 스케줄은 컨플릭트 동등하다함
시리얼스케줄과 컨플릭트동등한 스케줄을 컨플릭트 시리얼라이저블 이라고함
컨플릭트시리얼라이즈벌한 스케줄로 성능과 정합성 보장가능
RDB 내부 구현법
여러 트랜잭션을 동시 실행해도 스케줄이 컨플릭트시리얼라이저블하도록 보장하는 프로토콜 적용