-
728x90
트랜잭션
트랜잭션은 데이터베이스가 데이터를 읽거나 쓰는 최소 단위
트랜잭션 관리의 주요 이슈
- 하드웨어 / 소프트웨어 / 트랜잭션 실패
- 여러 트랜잭션을 동시에 실행 할 수 있는 동시성 향상
ACID
트랜잭션은 ACID 를 지녀야한다.
Atomicity - 원자성 : All or not. 즉 하나의 트랜잭션 내부의 연산들은 모두 성공하거나 모두 실패해야함
Consistency - 일관성 : 명시적 / 묵시적 integrity consistency 를 모두 만족시켜야함
- 명시적 consistency : PK(Primary Key), FK(Foreign Key), UK(Unique Key) 등 명시적으로 정의된 규칙
- 묵시적 consistency : 데이터의 흐름상 자연스럽게 형성되는 규칙. 예) A -> B 송금 전과 후의 A + B의 총액은 동일하다.
- 트랜잭션의 수행 중에는 inconsistent 해도 되지만 끝났을 때는 반드시 consistency 를 보장해야함
Isolation - 격리성 : 서로 다른 트랜잭션들이 동시에 수행될 때도 서로 완전히 격리되어 그 결과에 영향을 미쳐서는 안됨. 수행된 순서에 따라 결과가 달라질 수는 있으나 동시에 실행되는 트랜잭션들은 서로 영향을 미치지 않는다는 것이 뽀인트
Durability - 내구성 : 트랜잭션이 성공적으로 저장되었다면 시스템 실패(System failure) 가 있더라도 저장장치에 완전히 저장됨을 보장하는 것
Concurrent Execution (동시 실행)
여러 트랜잭션이 동시에 실행되면 throughput(단위 시간당 처리하는 트랜잭션의 수)이 증가하고, Average response time(사용자가 응답을 받기까지의 평균 대기시간)을 감축시킬 수 있다
데이터베이스의 consistency 를 보장하면서 동시성을 지원하는 것은 isolation을 얼마나 잘 지원하는가에 달림
T1과 T2를 서로 간섭 없이 수행할 수 있는 가장 쉬운 방법은 동시성을 제거하고 Serially 수행하는 것임
단점 : Average user response time 의 하락, Throughput 의 하락
트랜잭션의 상태
- Active : 현재 실행 중인 상태
- Partially committed : 커밋은 안되었으나 마지막 statement 까지 수행을 마친 상태
- Aborted : 취소 상태
- Committed : 모든 처리를 마친 성공적인 상태
'데이터베이스' 카테고리의 다른 글
[DB] Recoverable (0) 2021.04.24 [DB] Serializablilty (0) 2021.04.24 [DB] ER 다이어그램 / Ternary relationship (0) 2020.12.15 [DB] Cardinality Constraints / Participation Constraints (0) 2020.12.15 [DB] ER 다이어그램 기본 정리 (0) 2020.12.15