🌿 중급 DB
데이터베이스 락(Lock)이 뭔가요?
쉽게 이해하기
화장실 문고리를 잠그는 것과 같아요. 누군가 사용 중이면 다른 사람은 기다려야 하죠. 데이터베이스도 마찬가지예요. 누군가 특정 데이터를 수정하고 있으면, 다른 사람은 그 데이터를 건드리지 못하게 락을 걸어요.
핵심 정리
여러 사용자가 동시에 같은 데이터를 수정하지 못하게 잠그는 기능이에요.
자세히 알아보기
데이터베이스 락은 동시성 문제를 해결하는 핵심 메커니즘이에요. 여러 사용자가 동시에 같은 데이터를 수정하려 하면 데이터가 꼬일 수 있거든요.
락의 종류는 크게 두 가지예요. 첫째, 공유 락(Shared Lock, S-Lock)은 읽기 전용이에요. 여러 사람이 동시에 읽을 수 있지만, 누군가 읽는 중엔 수정은 불가해요. 둘째, 배타적 락(Exclusive Lock, X-Lock)은 쓰기 전용이에요. 한 명이 수정 중이면 다른 사람은 읽기도 쓰기도 못해요.
실무 예시를 볼까요? 온라인 쇼핑몰에서 재고가 1개 남은 상품을 두 사람이 동시에 주문하려 한다고 해봐요. 락이 없으면 둘 다 주문이 성공할 수 있어요. 하지만 락을 걸면 먼저 주문한 사람이 트랜잭션을 완료할 때까지 다음 사람은 대기하게 되죠. 그래서 재고가 정확히 관리돼요.
주의할 점은 데드락(Deadlock)이에요. A가 테이블1을 잠그고 테이블2를 기다리는데, B는 테이블2를 잠그고 테이블1을 기다리면 둘 다 영원히 대기하게 돼요. 데이터베이스는 이런 상황을 감지하면 하나를 강제로 롤백시켜요. 락은 성능과 안정성의 균형을 맞추는 게 핵심이에요.