209. 직렬 스케줄 (Serial Schedule) - 트랜잭션 순차 실행 동시성 제로 인터리빙 없음 무결성 보장 성능 저하 시스템 대기열
핵심 인사이트: (208번 심화 1) 은행 ATM 기계에 10명이 줄을 섰다. 만약 10명이 동시에 ATM 화면에 손가락을 뻗어 비밀번호를 누르고 입출금을 섞어서 누르면(비직렬 교차 실행), 돈이 엉뚱한 사람 계좌로 날아가 은행이 파산한다. 이걸 막는 가장 멍청하지만 가장 100% 완벽하게 안전한 방법이 있다. "야! ATM 방에 무조건 1명만 들어가! 안에 들어간 놈이 입금, 출금, 이체까지 싹 다 끝내고 영수증 뽑아서 문 밖으로 걸어 나올 때까지(COMMIT), 나머지 9명은 밖에서 숨도 쉬지 말고 얼어붙어서 대기해!! 1명이 끝나야 그다음 1명이 들어가는 무식한 1열 종대 줄 세우기를 해라!" 섞임과 혼돈을 허락하지 않는 абсолют 방탄 유리, 직렬 스케줄이다.
Ⅰ. 교차 실행(Interleaving)의 두려움
- 202번에서 쿼리들을 마구 섞어 실행하면 갱신 손실, 모순성 등 파멸적인 오류가 터진다고 배웠습니다.
- 이 끔찍한 에러를 생각할 필요조차 없게 원천 차단하는 가장 단순무식한 아이디어가 등장합니다. "섞지 마!"
Ⅱ. 직렬 스케줄 (Serial Schedule)의 개념 🌟
- 개념: 다수의 트랜잭션이 도착했을 때, 이들의 연산을 1도 섞지 않고(No Interleaving), 오직 하나의 트랜잭션이 시작부터 끝(COMMIT/ROLLBACK)까지 100% 온전히 독점으로 수행 완료된 후에야 비로소 다음 트랜잭션의 연산을 시작하도록 순차적(Sequential)으로 줄을 세워버리는 시간표(스케줄) 아키텍처입니다.
Ⅲ. 직렬 스케줄의 2대 극단적 성질 🌟 핵심 기출 🌟
지옥과 천당을 오가는 롤러코스터입니다.
1. 천당: 완벽한 데이터 일관성 (Consistency 100% 보장)
- T1이 실행되는 동안 T2는 존재하지 않는 것이나 마찬가지입니다(완벽한 밀실).
- 내가 데이터를 고칠 때 남이 훔쳐보거나 덮어쓰는 간섭 현상(202번의 5대 재앙)이 물리학적으로 아예 일어날 수 없습니다. 언제 쿼리를 날려도 194번 **일관성(Consistency)**과 195번 **격리성(Isolation)**이 우주 최고 수준으로 100% 보장되는 가장 순결한 정답지 상태입니다.
2. 지옥: 처참한 성능과 병목 (Concurrency 0%)
- T1이 하드디스크에서 10GB짜리 영화를 읽느라 CPU가 5초 동안 멍때리고(I/O 대기) 있습니다.
- 정상적인 시스템(다중 프로그래밍)이라면 이 노는 5초 동안 재빨리 T2의 가벼운 쿼리를 실행시켜서 CPU 뽕을 뽑아야 합니다.
- 직렬 스케줄의 고집: "안 돼! T1이 영수증 뽑고 나갈 때까진 하늘이 두 쪽 나도 T2는 못 들어가!" CPU가 5초 동안 텅 비어 놀게 됩니다(자원 낭비의 극치). 앞사람 1명의 덩치가 너무 크면 뒤에 줄 선 10만 명의 대기 시간(Response Time)이 무한대로 길어져 폭동이 일어나는 동시성 0%의 최악의 퍼포먼스를 자랑합니다.
Ⅳ. 현대 데이터베이스에서의 위상
- 속도가 생명인 현대 인터넷 쇼핑몰, 클라우드 DB에서 이 '순수 직렬 스케줄'을 그대로 적용하는 시스템은 전 세계 어디에도 단 1곳도 존재하지 않습니다. 쓰면 회사가 망합니다.
- 그럼 왜 배우나요?: 직렬 스케줄은 실무에서 쓰는 도구가 아니라, **"우리가 복잡하게 섞어서 짠 시간표(비직렬 스케줄)가 에러가 안 나는 진짜 정답인지 채점하기 위한 '완벽한 정답지(비교 기준점)'"**로써 학문적 가치를 가집니다. (211번 직렬 가능 스케줄의 판단 척도가 됩니다.)
📢 섹션 요약 비유: **직렬 스케줄(Serial Schedule)**은 식당 주방에서 100그릇의 요리 주문이 밀려왔을 때, 주방장(DB 엔진)이 **'한 번에 오직 하나의 요리만 처음부터 끝까지 묵묵히 다 끝내는 답답한 완벽주의 셰프'**와 같습니다. 1번 주문인 스테이크를 팬에 올려놓고 10분 동안 고기가 익을 때까지, 셰프는 가만히 서서 고기만 쳐다봅니다(CPU 자원 낭비 대기). 고기가 익는 그 10분 동안, 옆 화구에서 2번 주문인 라면 물을 끓이거나 3번 샐러드를 써는 병행 작업(인터리빙 섞기)을 절대 1%도 허락하지 않습니다. 스테이크가 접시에 예쁘게 담겨 손님상에 나가야만(COMMIT 완료) 비로소 2번 라면 물을 올립니다. 이렇게 하면 요리에 소금이 섞이거나 요리법이 꼬이는 에러(데이터 모순)는 100% 완벽하게 방지되지만, 100번째 손님은 라면 하나 먹겠다고 10시간을 굶주리며 대기열(Queue)에서 폭동을 일으켜 가게를 망하게 만드는, 세상에서 가장 안전하지만 가장 느려 터진 융통성 제로의 1열 종대 타임라인입니다.