패스잇
시스템 설계 · 중급

데이터베이스 트랜잭션의 격리 수준(Isolation Level)이 무엇이며, 'READ COMMITTED'와 'REPEATABLE READ' 수준의 차이점과 각각 어떤 상황에서 사용해야 하는지 설명해 주세요.

힌트 · 격리 수준은 여러 트랜잭션이 동시에 실행될 때 데이터 일관성을 유지하기 위한 규칙입니다. READ COMMITTED는 커밋된 데이터만 읽지만, REPEATABLE READ는 트랜잭션 내에서 동일한 데이터를 반복해서 읽을 수 있도록 보장합니다.

ACIDREAD COMMITTEDREPEATABLE READ팬텀 리드Non-Repeatable Read

모범답안

데이터베이스 트랜잭션의 격리 수준은 여러 트랜잭션이 동시에 실행될 때 데이터의 일관성을 유지하기 위한 규칙입니다.

'READ COMMITTED'는 트랜잭션이 다른 트랜잭션에 의해 커밋된 데이터만 읽도록 보장합니다. 즉, 아직 커밋되지 않은 데이터는 볼 수 없습니다. 이는 'Non-Repeatable Read' 현상, 즉 한 트랜잭션 내에서 같은 데이터를 두 번 읽었을 때 값이 달라지는 문제를 방지하지는 못합니다. 주로 데이터의 최신성을 중요하게 여기지만, 완벽한 일관성이 필수는 아닌 일반적인 웹 애플리케이션 등에서 사용됩니다.

반면 'REPEATABLE READ'는 한 트랜잭션 내에서 동일한 데이터를 반복해서 읽을 때 항상 같은 값을 읽도록 보장합니다. 이는 'Non-Repeatable Read'를 방지하지만, '팬텀 리드' 현상(트랜잭션 실행 중에 새로운 데이터가 삽입되어 읽는 결과가 달라지는 현상)은 발생할 수 있습니다. 금융 거래나 재고 관리처럼 데이터의 일관성이 매우 중요한 시스템에서 주로 사용됩니다.

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

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

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

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