2025/12/23 3

격리수준

출처 쉬운코드 https://www.youtube.com/watchv=bLLarZTrebU&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=17 Dirty Read : commit 되지 않은 변화를 읽음x가 10 y가 20 이었을 때 Non-repeatable read : 같은 데이터의 값이 달라짐x는 최초에 10 Phantom read : 없던 데이터가 생김두개의 튜플이 있음 최초 t1은 v가 10 t2는 v가 50 격리수준1. Read uncommitted : 커밋되지 않은 읽기 허용2. Read commited : 커밋된 읽기만 허용 Dirty Read 까지 방지3. Repeatable read : Non-repeatable read 까지 방지4. Serial..

데이터베이스 동시성제어 (2)

회복불가능한 스케줄스케줄 내에서 커밋된 트랜잭션이 롤백된 트랜잭션이 write 했었던 데이터를 읽은경우롤백을해도 이런 스케줄은 이전 상태로 회복 불가능할 수 있기 때문에 이런 스케줄은 dbms에서 허용하면안됨회복가능한 스케줄스케줄 내에서 어떤 트랜잭션도 자신이 읽은 데이터를 write한 트랜잭션이 먼저 커밋/롤백하기 전까지는 커밋하지 않는 경우캐스캐이딩 롤백하나의 트랜잭션이 롤백하면 의존성이있는 다른 트랜잭션도 롤백하는 것여러 트랜잭션의 롤백이 연쇄적으로 일어나면 처리하는 비용이 많이 듬캐스캐이드리스 스케줄스케줄 내에서 어떤 트랜잭션도 커밋되지않은 트랜잭션들이 write한 데이터를 읽지않은 경우 하지만 읽기작업이 없을시 일부 트랜잭션의 결과가 무효화될 수 있음엄격한 스케줄스케줄 내에서 어떤 트랜잭션도 커..

데이터베이스 동시성 제어 (1)

스케줄은 여러 트랜잭션이 동시에 실행될때 각 트랜잭션에 속한 명령의 실행순서시리얼 스케줄 (순차 스케줄) 트랜잭션들이 겹치지않고 한번에 하나씩 실행되는 스케줄비정상데이터가 생길일은 없지만 한번에 하나씩 실행되어서 성능이 안좋음 현실적으로 안쓰임I/O 작업이 끝날때까지 CPU가 대기논시리얼 스케줄 (비 순차 스케줄) 트랜잭션들이 겹쳐서(인터리빙) 되어 실행되는 스케줄I/O 작업이 끝나지않아도 다른 트랜잭션 실행 CPU 놀지않음같은시간동안 더 많은 트랜잭션 처리가능비정상데이터 생길 가능성있음논시리얼 스케줄에서 성능을 챙기는 방법Conflict란두가지의 명령이 있을때1. 각 명령이 서로 다른 트랜잭션이다2. 같은 데이터에 접근한다3. 최소하나는 write명령이다세가지를 만족하면 두 명령은 컨플릭트하다 라고함컨..