패스잇
백엔드 개발 · 심화

데이터베이스의 격리 수준(Isolation Level) 4가지와 각각에서 발생할 수 있는 문제에 대해 설명해주세요.

힌트 · Dirty Read, Non-repeatable Read, Phantom Read를 생각해보세요.

READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLEDIRTY READ

모범답안

면접관님, 데이터베이스 격리 수준은 트랜잭션 간의 간섭을 얼마나 허용할지 결정하는 설정입니다. ANSI 표준에서는 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE 이렇게 4가지 격리 수준을 정의하고 있습니다.

READ UNCOMMITTED는 가장 낮은 수준으로, 다른 트랜잭션에서 아직 커밋되지 않은 데이터도 읽을 수 있습니다. 이 경우 Dirty Read 문제가 발생할 수 있습니다.

READ COMMITTED는 커밋된 데이터만 읽을 수 있어 Dirty Read는 방지하지만, 트랜잭션 도중 다른 트랜잭션이 데이터를 변경하면 Non-repeatable Read 문제가 발생할 수 있습니다.

REPEATABLE READ는 트랜잭션이 시작된 후 읽은 데이터는 트랜잭션이 끝날 때까지 동일하게 유지되도록 보장합니다. Non-repeatable Read는 방지하지만, 새로운 레코드가 삽입되는 Phantom Read 문제는 발생할 수 있습니다.

SERIALIZABLE은 가장 높은 수준으로, 트랜잭션을 완전히 격리하여 모든 문제를 방지하지만, 동시성이 크게 떨어질 수 있습니다.

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

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

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

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