파일 시스템의 한계

동시 접근 문제는 같은 시작값을 두 번 믿을 때 생기는 변경 유실입니다

두 사용자가 같은 값을 읽고 각자 계산한 뒤 저장하면, 나중에 저장한 낡은 계산값이 앞선 변경을 덮을 수 있습니다. 핵심은 읽기-수정-쓰기 구간의 충돌을 조율할 규칙입니다.

보호 없는 파일 수정

같은 stock = 100을 믿고 계산하면 마지막 저장이 이깁니다

일반 파일 처리도 별도 잠금을 구현하면 일부 보호는 가능하지만, DBMS 수준의 트랜잭션 관리가 기본으로 제공되는 것은 아닙니다.

DBMS

충돌하는 행의 읽기-수정-쓰기 구간을 보호합니다

DBMS는 격리 수준과 구현 방식에 따라 대기, 재시도, 충돌 감지, 원자적 갱신을 선택합니다. 핵심은 결과가 일관된 규칙을 따르게 하는 것입니다.

문제 Lost Update

서로의 변경을 모른 채 낡은 값으로 저장하면 앞선 변경이 사라집니다.

트랜잭션 읽기-수정-쓰기를 작업 단위로 묶음

부분 처리나 중간 상태가 그대로 남지 않도록 작업 경계를 정합니다.

락/MVCC 충돌하는 데이터만 조율

같은 행을 고치는 요청은 보호하고, 충돌하지 않는 작업은 병렬로 진행될 수 있습니다.

격리 수준 얼마나 엄격히 보일지의 규칙

항상 모든 요청을 직렬 실행한다는 뜻이 아니라, 허용할 현상을 정하는 설정입니다.

1 같은 기준값을 읽음

A와 B가 모두 재고 100을 읽으면 두 계산은 서로의 변경을 반영하지 못합니다.

2 각자 수정값을 만듦

A는 90, B는 95를 만들지만 둘 다 최신 상태를 기준으로 한 계산은 아닙니다.

3 충돌 구간을 보호함

DBMS는 같은 데이터에 대한 충돌을 감지하거나 순서를 정해 변경 유실을 막습니다.