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

+ Recent posts