패스잇
백엔드 개발 · 심화

데이터베이스 락(Lock)의 종류와 데드락(Deadlock)이 발생하는 상황, 해결 방법에 대해 설명해주세요.

힌트 · 공유 락, 배타 락, 락 순서 규칙을 생각해보세요.

공유락(Shared Lock)배타락(Exclusive Lock)교착 상태(Deadlock)트랜잭션타임아웃(Timeout)

모범답안

데이터베이스 락은 크게 공유 락(Shared Lock)과 배타 락(Exclusive Lock)으로 나눌 수 있습니다. 공유 락은 데이터를 읽을 때 사용하며, 여러 트랜잭션이 동시에 획득할 수 있습니다. 반면 배타 락은 데이터를 수정할 때 사용하며, 하나의 트랜잭션만 획득할 수 있습니다.

데드락은 두 개 이상의 트랜잭션이 서로 상대방이 점유한 락을 기다리면서 무한정 대기하는 상황을 말합니다. 예를 들어, 트랜잭션 A가 테이블1에 배타 락을 걸고 테이블2에 배타 락을 걸기 위해 대기하고, 트랜잭션 B가 테이블2에 배타 락을 걸고 테이블1에 배타 락을 걸기 위해 대기하는 경우 발생합니다.

데드락 해결 방법으로는 타임아웃 설정, 데드락 감지 후 트랜잭션 강제 종료, 락 획득 순서 규칙 정의 등이 있습니다. 타임아웃은 특정 시간 이상 락을 기다리는 트랜잭션을 강제로 종료하는 방법입니다. 락 획득 순서 규칙은 모든 트랜잭션이 동일한 순서로 락을 획득하도록 하여 데드락 발생 가능성을 줄입니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 데이터베이스 면접 질문

← 데이터베이스 면접 질문 전체 보기