Terriermon - Digimon

데이터베이스의 고립화 수준Isolation Level

2022. 10. 5. 13:49자격증/정보처리기사

데이터베이스의 고립화 수준
: 데이터베이스의 고립화 수준은 다른 트랜잭션이 현재의 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도이다.


Isolation Level의 특징
ANSI / ISO SQL Standard : SQL-92 표준에서 4단계로 표준화, DBMS 벤더들이 준수
ACID 보장 : 트랜잭션의 속성인 ACID를 만족하기 위한 설정
Locking 기반 : 각각의 설정은 Locking 기술을 기반으로 Isolation Level을 조정

병행제어 미처리 시 문제 유형(직렬성 위반 내용)
1) 부정판독(Dirty Read)- Commit 되지 않은 데이터를 읽을 수 있음
- 다른 트랜잭션에 의해 수정됐지만 아직 커밋되지 않은 데이터를 읽는 것
- 트랜잭션 T1이 특정 행(ROW)의 갱신을 수행하고 난 후, T2가 그 행을 검색한 뒤 T1이 취소된다고 가정하면 트랜잭션 T2는 더 이상 존재하지 않는, 그리고 결코 존재하지 않았던 행을 본 것이 됨

2) 비반복판독(Nonrepeatable Read)- Commit 된 데이터만 읽음
- 최초 읽은 값고 다시 읽었을 때의 값이 다를 수 있음
- 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 그 사이에 다른 트랜잭션이 값을 수정 또는 삭제하여 두 쿼리 결과가 다르게 나타나는 현상
- 트랜잭션 T1이 한 행을 검색하고 T2가 그 행을 갱신한 뒤 T1이 동일한 행을 다시 검색한다고 가정하면, 트랜잭션 T1은 “동일” 한 행을 두 번 검색한 것이지만 두 개의 다른 값을 보게 됨

3) 가상 판독(Phantom Read)- 특정 범위 값을 읽고 나서 다시 읽었을 때 없었던 새로운 행을 읽을 수 있음
- 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 첫 번째 쿼리에서 없던 유령(Phantom) 레코드가 두 번째 쿼리에서 나타나는 현상
- 트랜잭션 T1이 특정 조건을 만족하는 모든 행을 검색한다고 하자. 그런 다음 트랜잭션 T2는 동일한 조건을 만족하는 새로운 행을 삽입한다고 할 때 트랜잭션 T1이 검색 요구를 반복한다면, 이전에는 존재하지 않았던 한 행을 보게 됨

Isolation Level의 유형
1) Read Uncommitted- 트랜잭션에서 처리중인, 아직 COMMIT 되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용
- SELECT 문장 수행하는 경우 해당 데이터에 Shared Lock이 걸리지 않는 Level 
- 어떤 사용자가 A라는 데이터를 B라는 데이터로 변경하는 동안 다른 사용자는 B라는 아직 완료되지 않은(Uncommitted 혹은 Dirty) 데이터 B를 읽을 수 있음
- 직렬성 위반 : Dirty Read, Nonrepeatable Read, Phantom Read

2) Read Committed- 트랜잭션이 COMMIT 되어 확정된 데이터만 읽는 것을 허용
- 대부분의 DBMS가 사용하는 Default Isolation Level (Mysql 은 Repeatable Read가 Default)
- 다른 사용자가 완료한(Committed) 데이터만 읽음
- DBMS별로 Shared Lock이 걸리거나, 걸리지 않을 수 있음
- 직렬성 위반 : Nonrepeatable Read, Phantom Read

3) Repeatable Read- 선행 트랜잭션이 읽은 데이터는 트랜잭션이 종료될 때까지 후행 트랜잭션이 갱신, 삭제하는 것 불허
- 트랜잭션이 완료될 때까지 SELECT 문장이 사용하는 모든 데이터에 Shared Lock이 걸림
- 다른 사용자는 그 영역에 해당되는 데이터에 대한 수정이 불가능함
- 직렬성 위반 : Phantom Read

4) Serializable- 선행 트랜잭션이 읽은 데이터를 후행 트랜잭션이 갱신하거나 삭제하지 못할 뿐 아니라, 중간에 새로운 레코드를 삽입하는 것도 막아줌
- Repeatable Read 수준에서 범위에 대한 Shared Lock 추가
- 직렬성 위반 : 발생불가

반응형

'자격증 > 정보처리기사' 카테고리의 다른 글

1. 요구사항 확인  (0) 2022.10.06
데이터베이스 ACID  (1) 2022.10.05
신기술용어  (1) 2022.09.29
12. 제품 소프트웨어 패키징  (0) 2022.09.23
11. 응용 SW 기초 기술 활용  (1) 2022.09.23