반응형
Ch 06. 트랜잭션 - 02. 트랜잭션 처리의 필요성
Ch 06. 트랜잭션 - 03. 트랜잭션 격리 수준
[] ANSI 표준 격리 수준(Isolation level)
(1) ANSI 표준 격리 수준(직렬화 가능 기능으로 부터 격리 수준 완화)
격리 수준 | 설명 |
Read Uncommitted | Commit 되지 않은 읽기 트랜잭션에서 처리 중인 아직 Commit 되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용 |
Read Committed | Commit된 읽기 트랜잭션이 Commit 확정된 데이터만 다른 트랜잭션이 읽도록 허용 |
Repeatable Read | 반복 읽기 트랜잭션 내에서 쿼리를 두 번 이상 수행할 때, 첫번째 쿼리에 있던 레코드가 사라지거나 값이 바뀌는 현상을 방지 |
Serialzable | 직렬화 가능 트랜잭션 내에서 쿼리를 두 번 이상 수행할 때, 첫 번째 쿼리에 있던 레코드가 사라지거나 값이 바꾸지 않음은 물론 새로운 레코드가 나타나지도 않음 |
- 가장 이상적인 격리 수준의 보장은 Serailizable 임
- 하지만 Serializable 수준으로 DBMS 운영 시 동시성이 크게 떨어지면서 성능 상 이슈가 발생함
- 이러한 이유로 Serializable 보다 낮은 격리 수준으로 DBMS가 운영 됨
- 그로 인해 발생되는 다양한 문제가 존재함
[] 격리 수준 완화되면서 직렬화 가능에서 없었던 현상 발생
격리 수준 | 설명 |
Dirty Read | Dirty 읽기 어떤 트랜잭션이 Commit되기 전 다른 트랜잭션에서 데이터 읽음 변경 후 아직 Commit되지 않은 값을 읽었는데 변경을 가한 트랜잭션이 최종적으로 롤백 된다면 그 값을 읽은 트랜잭션은 비 일관된 상태에 놓이게 됨 |
Non-Repeatable Read | 애매한 읽기 어떤 트랜잭션이 이전에 읽은 데이터를 다시 읽어 들일 때 2회 이후의 결과가 1회 때와 다른 현상 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 그 사이에 다른 트랜잭션이 값을 수정 또는 삭제하는 바람에 두 쿼리 결과가 다르게 나타나는 현상 |
Phantom Read | 유령 읽기 어떤 트랜잭션을 읽을 때 선택할 수 있는 데이터가 나타나거나 사라지는 현상 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 첫 번째 쿼리에서 없던 유령(Phantom) 레코드가 두 번째 쿼리에서 나타나는 현상 |
[] 격리 수준과 3가지 현상의 관계
격리 수준 | Dirty Read | Non-Repeatable Read | Phantom Read |
Read Uncommitted | 가능 | 가능 | 가능 |
Read Committed | 불가능 | 가능 | 가능 |
Repeatable Read | 불가능 | 불가능 | 가능 |
Serializable Read | 불가능 | 불가능 | 불가능 |
반응형
'자격증 > 패스트 캠퍼스 데이터베이스와 SQLD 합격패스 Online' 카테고리의 다른 글
패스트 캠퍼스 챌린지 23일차 데이터베이스와 SQLD 합격패스 Online (0) | 2021.09.28 |
---|---|
패스트 캠퍼스 챌린지 22일차 데이터베이스와 SQLD 합격패스 Online (0) | 2021.09.27 |
패스트 캠퍼스 챌린지 20일차 데이터베이스와 SQLD 합격패스 Online (0) | 2021.09.25 |
패스트 캠퍼스 챌린지 19일차 데이터베이스와 SQLD 합격패스 Online (0) | 2021.09.24 |
패스트 캠퍼스 챌린지 18일차 데이터베이스와 SQLD 합격패스 Online (0) | 2021.09.23 |