2021. 12. 3. 23:50ㆍStudy/Database

1. 트랜잭션
- 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위
- 상호독립적
- 트랜잭션 간에는 서로 간섭하지 않음
2. 4대 특징
1) 원자성 Atomicity
- All or Nothing
2) 일관성 Consistency
- 데이터 조작 전후 데이터가 일관성이 있어야함
3) 고립성 Isolation
- 동시에 데이터 조작을 실행할 경우, 모순 없이 실행되는 것을 보증
4) 지속성 Durability
- Commit 후 데이터 변경사항이 확정되는 것
3. 격리 수준 (ANSI표준)
Level | Description | Level | 동시성 | Dirty Read |
Non-Repeatable Read |
Phantom Read |
Read Uncommitted |
아직 Commit 되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용 | 낮음 높음 |
높음 낮음 |
O | O | O |
Read Committed |
트랜잭션이 Commit 확정된 데이터만 다른 트랜잭션에서 읽도록 허용 | X | O | O | ||
Repeatable Read |
쿼리를 두 번 이상 수행할 때, 첫 번째 쿼리에 있던 레코드가 사라지거나 값이 바뀜 | X | X | O | ||
Serializable | 쿼리를 두 번 이상 수행할 때, 첫 번째 쿼리에 있던 레코드가 사라지거나 값이 바뀌지 않음 (새 레코드도 X) | X | X | X |
- 가장 이상적인것은 직렬화 이나, 동시성을 보장할 수 없으므로 사용하지 않음
- 필요한 경우에만 수준을 변경함
4. Lock & Dead Lock
1) Lock : 데이터 일관성 보장을 위한 작업, 다른 트랜잭션에서는 현재 수정중인 데이터를 수정할 수 없음
Lock Type | Name | Description |
공유락 Shared Lock | LS | 트랜잭션이 읽기를 할 때 사용하는 락 |
베타락 Exclusive Lock | LX | 읽고 쓰기를 할 때 사용하는 락 |
- 읽기 -> LS, 읽기/쓰기 -> LX 요청
- 현재 LS 상태인 경우, LS만 허용 (LX는 대기상태)
- 현재 LX 상태인 경우, LS, LX 모두 비허용 (대기상태)
2) Dead Lock : 락이 걸려있는 여러 트랜잭션에서 서로에게 락 허용을 요청할 때, 무한 대기 상태에 빠질 수 있음 (교착상태)
5. 트랜잭션 처리 시 주의사항
- 데드락 최소화를 위한 전략
- Auto Commit (Commit 부하), 긴 트랜잭션 지양
- 시스템 요건에 맞게 트랜잭션 격리 수준 조정 필요
'Study > Database' 카테고리의 다른 글
[SQLP] 과목 1. 데이터 모델링의 이해 - (2) 데이터 모델과 성능 (0) | 2021.12.23 |
---|---|
[SQLP] 과목 1. 데이터 모델링의 이해 - (1) 데이터 모델링의 이해 (0) | 2021.12.20 |
[SQLP] 시험 과목 정리 (0) | 2021.12.08 |
[SQLP] 이론 7. 백업 및 복구 (0) | 2021.12.08 |
[SQLP] 이론 6. 테이블 설계 (0) | 2021.12.08 |
[SQL] VIEW (0) | 2021.12.03 |
[SQL] SELECT, INSERT, UPDATE, DELETE, MERGE (0) | 2021.12.02 |
[SQL] DDL, DML, DCL, TCL (0) | 2021.12.01 |
[Oracle] 테이블 스페이스 설정 (0) | 2021.11.27 |
[Oracle] SQL Plus, 초기설정, 계정생성, 권한부여 (0) | 2021.11.27 |