데이터베이스 격리 수준

ClassBinu·2024년 4월 22일

F-lab

목록 보기
13/65

트랜잭션 간에 얼마나 고립되어 있는지 나타내는 수준
한 트랜잭션이 다른 트랜잭션이 변경한 데이터에 대한 접근 강도

격리가 필요한 이유

ACID 특정 보장 위해
락은 기본적으로 성능 저하를 가져옴.
느슨한 락을 무경설에 문제를 가져옴.

SQL 표준에서의 네 가지 기본 격리 수준

상호 작용

트랜잭션 처리 시 발생할 수 있는 세 가지 주요 문제

1. Dirty Read

한 트랙잭션이 다른 트랜잭션이 아직 커밋하지 않은 데이터를 읽는 현상

2. Non-repeatable Read

한 트랜잭션 내에서 같은 데이터를 두 번 조회했을 때, 다른 결과를 얻는 현상
첫 번째 조회와 두 번째 조회 사이에 다른 트랜잭션이 해당 데이터를 수정하고 커밋했기 때문
타 트랜잭션의 수정이 원인
데이터 행은 그대로임.

3. Phantom Read

한 트랜잭션 내에서 동일 쿼리를 여러 번 실행했을 때, 새로 추가되거나 삭제된 행이 조회 결과에 포함되는 현상. 즉, 조회되는 행의 수가 달라지는 것.
첫 번째 쿼리 실행 후 다른 트랜잭션이 해당 데이터 집합에 새로운 데이터를 삽입하거나 삭제하고 커밋했기 때문
타 트랜잭션의 삽입/삭제가 원인

격리 수준(Isolation Level)

1. READ UNCOMMITTED (읽기 비커밋)

가장 낮은 격리 수준
다른 트랜잭션의 커밋되지 않은 데이터를 읽을 수 있음.
이 수준에서는 더티 리드가 발생할 수 있음.

2. READ COMMITTED (읽기 커밋)

커밋된 데이터만 읽을 수 있음.
더티 리드는 방지되지만, non-repeatable Read는 발생 가능

3. REPEATABLE READ (반복 가능 읽기)

트랜잭션이 시작될 때 읽은 데이터는 트랜잭션 동안 일관성 있게 유지
더티 리드, non-repeatable read는 방지, 팬덤 리드는 발생 가능

4. SERIALIZABLE (직렬화 가능)

가장 높은 격리 수준
모든 형태의 읽기 이상 방지
트랜잭션 처리 능력 떨어질 수 있음.

5개의 댓글

comment-user-thumbnail
2024년 4월 22일

안녕하세요. 크래프톤에 입과하고 싶은 사람1입니다. 크래프톤 관련 글을 읽어보니 정말 화면으로 열정이 느껴졌습니다. 크래프톤에 먼저 입과하신 선배님께 질문을 드리고 싶습니다. 크래프톤 정글 취업률이랑 협력사 가는 비율이 어느 정도인지 수료 이후가 궁금합니다. 답변 주시면 정말 감사하겠습니다.

2개의 답글