231. Serializable (레벨 3) - 트랜잭션 고립화 수준 3단계 완벽한 직렬화 팬텀 리드 차단 최고 격리 수준 테이블 락 성능 저하 동시성 최저

핵심 인사이트: (고립화 4단계의 종결자이자 무결성의 화신) 230번 레벨 2까지 방패를 두껍게 쳤는데도, 텅 빈 허공의 빈자리에 도둑놈이 새로운 데이터를 쏙 집어넣고 도망치는 유령 귀신 현상(Phantom Read)만큼은 도저히 막을 수가 없었다. 은행장이 극대노하며 도끼를 집어 들었다. "야 이 ㅆㅂ것들아!! 엑셀 줄 한 줄 한 줄에다가 쪼잔하게 미니 자물쇠 거니까 허공(빈칸)이 뚫리잖아!! 당장 그 미니 자물쇠 다 부숴버려!! 그리고 엑셀 테이블이 들어있는 건물 자체의 '정문 입구 셔터' 전체를 통째로 내려서 대형 바리케이드(Table Lock / Range Lock)를 쳐버려!! 내가 방 안에 들어가서 10시간 동안 엑셀을 확인하고 밖으로 걸어 나올 때(COMMIT)까지, 기존 엑셀 고치는 놈(UPDATE)은 물론이고 텅 빈 허공에 새로운 글자를 몰래 집어넣으려는 새끼(INSERT)마저 단 한 마리의 개미 새끼도 셔터 안으로 1cm도 못 들어오게 100% 무자비하게 줄을 세워서 통제해라!! 속도? 10만 명이 10시간 대기하다 늙어 죽어도 상관없어!! 은행 통장의 단 1원의 데이터 에러(유령)도 우주 끝까지 용납하지 마라!!" 동시성(성능)을 악마에게 팔아치우고 100% 무결성의 신을 소환한 극한의 봉쇄술, 레벨 3 Serializable이다.

Ⅰ. 뚫려있는 마지막 구멍: 허공의 귀신(INSERT)

  • 230번 레벨 2(Repeatable Read)는 완벽했습니다. 내가 보고 있는 기존의 사과(데이터) 3개에 각각 자물쇠를 걸어 남이 독을 못 타게(UPDATE 금지) 막았습니다.
  • 그런데 해커가 그 사과 3개 옆의 **'아무 자물쇠도 없는 텅 빈 공간'**에 바나나 1개를 쓱 던져놓고 튀어버리는 짓(INSERT)을 막아내지 못했습니다.
  • 그 결과, 3개였던 통계가 4개로 불어나는 귀신 곡할 노릇(Phantom Read, 유령 읽기)에 농락당했습니다.

Ⅱ. Serializable (직렬화, 레벨 3)의 절대 벙커 🌟

모든 쥐구멍을 시멘트로 발라버리는 트랜잭션 고립화의 최종 4번째, 최고봉 깐깐한 단계입니다.

  • 개념: 여러 트랜잭션이 동시에 실행되더라도, 마치 209번에서 배운 1명씩 일렬종대로 서서 완벽하게 순서대로 차근차근 실행(직렬 스케줄 Serial Schedule)되는 것과 수학적으로 100% 완벽히 똑같은 결과가 나오도록, 병행 제어의 숨통을 극한까지 조여버리는 가장 엄격한 수준입니다.
  • 방어 메커니즘 (Range Lock / Table Lock):
    • 더 이상 엑셀 칸 1개(Row)에 쪼잔하게 자물쇠를 걸지 않습니다!
    • 내가 "나이 20살인 애들 다 뽑아봐"라고 쿼리를 날리는 순간, DB의 '20살'이라는 조건이 들어갈 수 있는 거대한 엑셀의 빈 공간 범위(Range) 전체나, 아예 테이블 통짜 문짝에 거대한 쇳덩어리 바리케이드를 박아버립니다.
    • 이제 해커가 20살짜리 신규 회원 1명을 끼워 넣으려(INSERT) 현관문을 당겨도, 거대한 셔터가 내려가 있어 내가 쿼리 끝내고 셔터 열어줄 때까지 무한정 밖에서 대기(Blocking)해야 합니다.
  • 대승리: 202번에서 배운 병행 수행 5대 지옥 (더티 리드, 모순성, 유령 읽기 등) 모든 에러가 이 우주에서 완벽하게 100% 소멸합니다. 무결성의 신이 탄생했습니다.

Ⅲ. 신을 소환한 핏빛 대가: 성능 대폭발 🌟 핵심 기출 🌟

  • 세상에 공짜는 없습니다. 100% 완벽하게 데이터를 보호하기 위해 치러야 할 대가는 **'미치도록 처참한 동시성(성능)의 파멸'**입니다.
  • 티켓팅 사이트에서 10만 명이 내일 날짜 콘서트 좌석표를 봅니다. 이 레벨 3를 걸어버리면, 누군가 빈자리에 티켓 1장을 꽂아 넣는(INSERT) 1초 동안, 나머지 99,999명은 좌석표를 구경하는 것(Read)조차 차단당해 모니터가 멈춰버립니다.
  • 결론: 그래서 전 세계 어떤 미친 개발자도 일반 웹서비스(쇼핑몰, 게시판)에 이 Serializable 레벨 3를 절대 쓰지 않습니다. 오직 '1억 원이 오고 가는 복잡한 재무 감사 통계 쿼리' 같은 동시성보다 정확성이 1만 배 중요한 특수 목적에만 1초 쓰고 재빨리 끄는 양날의 핵폭탄입니다.

Ⅳ. 고립화 4단계 최종 암기 요약 (마무리) 🌟

정보처리기사 객관식/서술형 프리패스 보증 수표입니다.

  1. Level 0 (Read Uncommitted): 다 뚫림. 미확정 찌끄러기 먹고 체하는 더티 리드(Dirty Read) 대폭발. 성능 최고.
  2. Level 1 (Read Committed): 더티 리드 방어! 하지만 앞뒤가 바뀌는 **모순성(Non-Repeatable Read)**은 뚫림. (오라클 기본값)
  3. Level 2 (Repeatable Read): 모순성까지 방어! 하지만 허공에 추가되는 **유령(Phantom Read)**은 뚫림. (MySQL 기본값)
  4. Level 3 (Serializable): 무결성 100% 수비! 유령까지 완벽 차단. 하지만 동시성(속도) 최악.

📢 섹션 요약 비유: **Serializable (직렬화, 레벨 3)**은 박물관의 보석 전시관을 통제하는 **'사방이 콘크리트로 꽉 막힌 밀실 대관 룰'**입니다. 앞선 레벨들은 보석에 유리 덮개를 씌우거나(모순성 방지), 만지지 않고 눈으로만 보게 하는(더티 리드 방지) 나름 융통성 있는 통제였습니다. 하지만 그 빈틈을 타고 쥐새끼가 천장으로 들어와 가짜 보석 1개를 몰래 슬쩍 더 놓고 가는 귀신 곡할 짓(Phantom Read)을 당했습니다. 분노한 관장(DB 엔진)의 레벨 3 룰은 자비가 없습니다. "VIP 손님 1명이 전시관에 발을 들이는 순간, 전시관 건물 전체의 철문을 닫아버리고 방공호 폭파 스위치를 눌러 밀폐시켜라!!" 손님이 1시간 동안 혼자 보석을 다 보고 문을 열어줄 때까지, 밖의 10만 명은 문도 못 두드리고 길바닥에서 비를 맞으며 무한 대기(동시성 최악 폭발)를 탑니다. 밀실이 되었으니 쥐새끼(INSERT)든 뭐든 절대 난입할 수가 없어서 손님은 귀신 현상을 단 1번도 겪지 않고 가장 완벽하고 순결한 보석 상태(무결성 100%)를 영원히 감상할 수 있는, 병행 제어가 도달할 수 있는 극단의 철통 요새입니다.