1. 트랜잭션이란
1. 데이터베이스 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야할 일련의 연산들
2. 특징
1. 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위
2. 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정
3. 하나의 트랜잭션은 commit 되거나 rollback 됨
3. 트랜잭션의 성질(ACID)
1. Atomicity 원자성
1. 트랜잭션의 연산은 데이터베이스에 모두 반영되던지 아니면 전혀 반영되지 않는다
2. 트랜잭션 내 모든 명령은 반드시 완벽히 수행되어야 하며, 수행 전 후의 상태가 같아야 한다
2. Consistencty 일관성
1. 트랜잭션이 성공하면 언제나 일관성 있는 상태로 유지해야한다
2. 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전 후의 상태가 같아야한다
3. Isolation 독립성
1. 둘 이상의 드랜잭션이 동시에 병행되는 경우 어느 하나의 트랜잭션 중 다른 트랜잭션의 연산이 끼어 들 수 없다
2. 수행중인 트랜잭션은 완전히 끝날때 까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다
4. Durability 영속성
1. 완료된 트랜잭션의 결과는 영구적으로 반영되어야한다
4. 격리수준
1. Read uncommitted
1. 각 트랜잭션에서 변경된 내용의 commit 이나 rollback에 관계 없이 다른 트랜잭션의 값을 읽을수 있음
2. 데이터 정합성에 문제가 많은 격리 수준
3. Commit 되지 않은 상태지만 update 된 값을 다른 트랜잭션에서 읽을 수 있음
2. Read committed
1. Dirty read 발생하지 않음
2. 실제 테이블 값이 아닌 undo로그 영역에 백업된 레코드에서 값을 가져옴
3. 입급,출금 처리 시 데이터 정합성 문제 발생
3. Reperatable read
1. 트랜잭션마다 ID를 부여하여 트랜잭션 id보다 작은 트랜잭션 번호에서 변경된 것 사항만 읽어 같은 데이터를 두번 조회 했을 때 일관성 있는 결과를 리턴함
2. Phantom read현상은 여전히 반복
4. Serializable
1. 트랜잭션이 완료될 때 까지 모든 데이터의 share lock 발생
2. 격리수준이 가장 강한
'Develop > DB 일반' 카테고리의 다른 글
조인의 방식 및 종류 (0) | 2021.12.23 |
---|---|
인덱스란 (0) | 2021.12.23 |