이 게시글은 패스트캠퍼스의 '데이터베이스와 SQLD 합격패스 Online' 강의를 요약한 내용입니다.
특징 | 설명 |
---|---|
원자성(Atomicity) | - 데이터 조작이 전부 성공 혹은 실패할지 보증하는 구조 - COMMIT : 조작 과정에 문제 없으면 처리 확정 - ROLLBACK : 조작 중간에 문제 발생 시, 첫 과정 직전 상태로 복귀 |
일관성(Consistency) | - 데이터 조작 전후에 일관성 유지 필요 - 데이터베이스 오브젝트에 정합성 제약 추가 가능 |
고립성(Isolation, 격리성) | - 복수의 사용자가 동시에 데이터 조작을 실행할 경우 각각의 처리가 모순 없이 실행되는 것을 보증 |
지속성(Durability) | - 트랜잭션이 COMMIT 되면 변경 사항이 영구적으로 확정되는 것을 보장 - 데이터 조작 완료 후 통지 받는 시점에서 결과를 잃지 않고 유지 |
동시에 데이터 조작을 실행할 경우 각각의 처리가 모순 없이 실행되는 것을 보증
사용자 A와 사용자 B가 좌석을 예매하려고 할 때, A가 선택한 좌석은 B가 선택할 수 없어야 하며, 마찬가지로 B가 선택한 좌석은 A가 선택할 수 없어야 한다.
동시성과 격리성은 Trade - Off 관계에 있다.
격리 수준 | 설명 |
---|---|
Read Uncommitted | - COMMIT 되지 않은 읽기 - 트랜잭션에서 처리 중인 아직 COMMIT 되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용 |
Read Committed | - COMMIT 된 읽기 - 트랜잭션이 COMMIT 확정된 데이터만 다른 트랜잭션이 읽도록 허용 - Oracle 데이터베이스의 기본 설정 |
Reapeatable Read | - 반복 읽기 - 트랜잭션 내에서 쿼리를 두 번 이상 수행 시, 첫 번째 쿼리에 있던 레코드가 사라지거나 값이 바뀌는 현상을 방지 |
Serializable | - 직렬화 가능 - 트랜잭션 내에서 쿼리를 두 번 이상 수행 시, 첫 번째 쿼리에 있던 레코드가 사라지거나 값이 바뀌지 않음은 물론이고 새로운 레코드가 나타나지도 않음 |
가장 이상적인 격리 수준의 보장은 Serializable이나 DBMS 운영 시 동시성이 크게 떨어지면서 성능상 이슈가 발생함.
1. Dirty Read (Dirty 읽기)
2. Non - Repeatable Read (애매한 읽기)
3. Phantom Read (유령 읽기)
격리 수준 | Dirty Read | Non-Repeatable Read | Phantom Read |
---|---|---|---|
Read Uncommitted | 가능 | 가능 | 가능 |
Read Committed | 불가능 | 가능 | 가능 |
Reapeatable Read | 불가능 | 불가능 | 가능 |
Serializable | 불가능 | 불가능 | 불가능 |