← 질문 목록
#380깊이 0

낙관적 락과 비관적 락은 무엇으로 고르는가?

데이터베이스심화동시성

데이터 충돌로 인한 갱신 손실을 막기 위해 충돌 빈도와 시스템 부하를 기준으로 고른다.

기준낙관적 락비관적 락
충돌 빈도드물 때잦을 때
락킹 비용낮음 (버전 체크)높음 (물리적 잠금)
대기 시간없음 (실패 시 재시도)발생 (락 획득 대기)

낙관적 락은 데이터 수정 시점에 버전 번호를 확인해 충돌을 감지한다. 충돌이 없으면 반영하고, 버전이 다르면 예외를 던져 사용자가 다시 시도하게 만든다.

비관적 락은 읽거나 고칠 때 미리 잠금을 잡아 부딪히는 작업을 막는다. 무엇까지 막는지는 잠금 종류와 격리 수준에 달렸다. 데이터 무결성을 강하게 보장하지만, 대기 시간이 늘어나 성능 저하가 발생할 수 있다.

읽기 비중이 높고 충돌이 적은 서비스에 낙관적 락을 쓴다. 반면, 결제나 재고 관리처럼 충돌이 잦고 데이터 정확성이 절대적인 곳에 비관적 락을 쓴다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

낙관적 락과 비관적 락은 무엇으로 고르는가?