격리 수준(Isolation Level)란?

동시에 실행되는 트랜잭션끼리의 간섭을 어디까지 막을지 정하는 설정. SQL 표준 규격에서는 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE의 4가지가 있으며, 위의 수준일수록 더티 리드, 반복 불가능한 읽기, 팬텀 리드를 많이 막지만 동시에 처리할 수 있는 양은 줄어든다.

일본어 명칭: 分離レベル

격리 수준(Isolation Level)은(는) 데이터베이스 기초 등 1개 분야의 연습 문제 3개에 나와요.

분야: 데이터베이스 기초

도전해 보기: 격리 수준(Isolation Level) 관련 문제

SQL 표준 규격이 정하는 격리 수준 중 READ COMMITTED에서 일어날 수 있는 현상의 조합으로 올바른 것은?

  1. A더티 리드, 반복 불가능한 읽기, 팬텀 리드 모두 일어나지 않는다
  2. B더티 리드는 일어나지 않지만, 반복 불가능한 읽기와 팬텀 리드는 일어날 수 있다
  3. C더티 리드와 반복 불가능한 읽기는 일어나지 않지만, 팬텀 리드는 일어날 수 있다
정답과 해설 보기

정답: B. 더티 리드는 일어나지 않지만, 반복 불가능한 읽기와 팬텀 리드는 일어날 수 있다

SQL 표준 규격은 격리 수준을 막는 현상이 적은 순서대로 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE의 4가지로 정하고 있습니다. READ UNCOMMITTED에서는 세 가지 현상이 모두 일어날 수 있습니다. READ COMMITTED는 커밋된 데이터만 읽으므로 더티 리드를 막지만, 읽을 때마다 그 시점의 커밋된 값을 보므로 반복 불가능한 읽기와 팬텀 리드는 일어날 수 있습니다. REPEATABLE READ는 여기에 더해 반복 불가능한 읽기를 막지만, 팬텀 리드는 일어날 수 있습니다. SERIALIZABLE은 세 가지를 모두 막으며, 트랜잭션을 어떤 순서로 하나씩 실행한 경우와 같은 결과를 보장합니다. 격리 수준을 올릴수록 락 대기나 처리의 재실행이 늘어 동시에 처리할 수 있는 양이 줄어들므로, 용도에 따라 고릅니다. 실제 DBMS에서는 기본 격리 수준이나 각 수준에서 실제로 막을 수 있는 현상이 표준 규격의 최소한의 규정보다 강한 경우가 있습니다.

해설 속 격리 수준(Isolation Level)

격리 수준(Isolation Level)이(가) 나오는 문제 (3)

  1. SQL 표준 규격이 정하는 격리 수준 중 READ COMMITTED에서 일어날 수 있는 현상의 조합으로 올바른 것은?
  2. 트랜잭션을 동시에 실행했을 때 일어나는 문제 중 더티 리드에 대한 설명으로 올바른 것은?
  3. 트랜잭션 T1이 SELECT COUNT(*) FROM 주문 WHERE 금액 >= 1000을 실행했더니 8건이었다. 그 직후 T2가 금액 2000인 주문 행을 INSERT하고 커밋했다. T1이 같은 SELECT 문을 다시 실행하자 9건이 되었다. 이 현상은?

관련 용어

SQL 트랜잭션(Transaction) 2단계 로킹(2PL) 관계형 데이터베이스(Relational Database) 기본 키(Primary Key) 뷰(View) 외래 키(Foreign Key) 인덱스(Index) 정규화(Normalization) 제3정규형(3NF)

용어집으로 돌아가기