201. 동시성 제어 (Concurrency Control / 병행 제어)의 목적 - 데이터 일관성 유지 다중 사용자 처리량 극대화 트랜잭션 격리성 응답 시간 최소화
핵심 인사이트: (195번 격리성 복습) 나이키 한정판 신발 1켤레가 떴다. 전국에서 10만 명이 동시에 구매 버튼을 눌렀다. 만약 DB가 "한 명씩 천천히 들어오세요~" 하고 줄을 세우면(동시성 제로), 10만 번째 사람은 내일 아침에나 구매 버튼이 눌릴 것이다(서버 마비). 반대로 "에라 모르겠다 다 같이 들어와서 가져가!" 하면(동시성 무한대), 10만 명이 동시에 결제에 성공해서 1켤레짜리 신발이 10만 개 배송되는 재앙(DB 붕괴)이 터진다. "야! 10만 명이 동시에 작업하게 길을 빵빵하게 열어주되(성능 극대화), 1켤레 남은 신발 엑셀 칸(데이터)에 접근하는 그 찰나의 순간만큼은 아무도 못 건드리게 자물쇠를 걸어서 꼬이지 않게 만들어라!!" 성능과 안전이라는 두 마리 토끼를 잡는 DB 최고의 곡예, 동시성 제어다.
Ⅰ. 병행 처리(Concurrent Processing)의 딜레마
- 병행 수행: 수많은 사용자의 트랜잭션들이 DB 엔진의 CPU와 메모리를 공유하며 '동시에' 섞여서 실행되는(인터리빙, Interleaving) 상태입니다.
- 모순의 발생: 엑셀(DB) 셀 하나를 2명이 동시에 고치려고 하면 필연적으로 덮어쓰기 에러가 납니다. 195번의 **격리성(Isolation)**이 깨지면서 203번에서 배울 갱신 손실(Lost Update) 등 수많은 버그가 폭발합니다.
Ⅱ. 동시성 제어 (Concurrency Control)의 개념 🌟
- 개념: 다중 사용자 환경에서 수많은 트랜잭션이 동시에 실행될 때, 서로 데이터에 간섭하여 DB의 일관성(Consistency)이 파괴되지 않도록 상호 작용을 꼼꼼하게 통제(Locking 등)하는 데이터베이스 관리 시스템(DBMS)의 핵심 메커니즘입니다.
Ⅲ. 동시성 제어의 4대 궁극적 목적 🌟 핵심 기출 🌟
속도와 안전, 이 상충하는 목표를 동시에 달성하는 것이 동시성 제어의 존재 이유입니다.
1. 데이터베이스의 일관성(Consistency) 유지 🌟 (안전)
- 10만 명이 덤벼들어도, 결제가 다 끝난 뒤의 재고 수량은 무조건 정확한 마이너스 1이 되어야 합니다. 모순된 데이터(쓰레기 값)가 생성되는 것을 막는 가장 절대적인 1순위 목표입니다.
2. 시스템 활용도(Utilization) 및 처리량(Throughput) 극대화 🌟 (성능)
- 일관성을 지킨다고 트랜잭션을 1명씩 순서대로(직렬로) 실행하면 너무 안전하지만 CPU와 디스크가 놀고먹어서 처리량(1초에 처리하는 트랜잭션 개수, TPS)이 바닥을 칩니다.
- 동시성 제어는 "안전하게 지킬 부분만 딱 지키고, 나머지는 최대한 많은 놈들이 동시에 섞여서 일하게" 만들어서 하드웨어 100% 성능을 다 쥐어짜 냅니다.
3. 사용자 응답 시간(Response Time) 최소화 🌟 (고객 만족)
- 10만 명 중 뒤에 서 있는 사람도 무한정 대기하지 않고, 0.1초 만에 "재고 소진되었습니다"라는 응답이라도 받아야 합니다.
- 자물쇠(Lock)를 오래 쥐고 있지 않도록 통제하여, 대기열(Queue)에 있는 사용자들의 체감 대기 시간을 극단적으로 줄여줍니다.
4. 트랜잭션의 격리성(Isolation) 보장
- 각 트랜잭션 사용자가 "어? 나 말고 10만 명이 더 접속해 있었어? 나 혼자 쓰고 있는 줄 알았네!"라고 완벽하게 착각하게 만들 정도로 투명한 논리적 독점 환경(환상)을 제공합니다.
Ⅳ. 어떻게 제어하는가? (스포일러)
- 이 목적을 달성하기 위해 213번 락킹(Locking) 기법(자물쇠 채우기)이나, 타임스탬프(Time Stamp) 순서 기법, 현대의 대세인 MVCC(다중 버전 동시성 제어) 등의 흑마법 알고리즘들이 출동합니다.
📢 섹션 요약 비유: **동시성 제어(병행 제어)**의 목적은 **'백화점 화장실(데이터베이스)의 수용 인원과 회전율을 극한으로 끌어올리는 관리인의 통제술'**입니다. 화장실에 변기가 1개(데이터)밖에 없는데 10만 명이 몰렸습니다. 만약 문을 없애버리면 10명이 하나의 변기에 동시에 싸서 화장실이 똥밭(일관성 파괴)이 됩니다. 반대로 관리인이 10만 명을 일렬로 세우고 1명씩 화장실에 들어가게 하면 안전하지만 대기 시간이 3일이 걸립니다(응답 시간 최악, 처리량 붕괴). 최고의 동시성 제어 관리인은 화장실을 '세면대 구역', '소변기 구역', '대변기 칸'으로 쪼개고 각각 자물쇠(Lock)를 답니다. 손 씻는 사람과 소변보는 사람은 서로 방해되지 않으니 동시에 수십 명을 우르르 들여보내고(처리량 극대화), 오직 대변기 칸에 들어간 사람만 1명씩 자물쇠를 채워 보호해 줍니다(격리성과 일관성 유지). 안전하게 프라이버시를 지키면서도, 밖에서 기다리는 사람들의 줄을 빛의 속도로 빼주는 완벽한 통제 철학입니다.