데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위
- 원자성(Atomicity) : 분해가 불가능한 작업의 최소단위, 연산 전체가 성공 또는 실패
- 일관성(Consistency) : 트랜잭션이 실행 성공 후 항상 일관된 데이터베이스 상태를 보존해야 함
- 격리성(Isolation) : 트랜잭션 실행 중 생성하는 연산의 중간 결과를 다른 트랜잭션이 접근 불가
- 영속성(Durability) : 성공이 완료된 트랜잭션의 결과는 영속적으로 데이터베이스에 저장
활동(활성) , 부분완료, 완료, 실패, 철회
- 부분완료는 마지막 명령문을 실행한 상태, commit이 완료되지 않은 상태
- 철회는 시작전의 상태로 돌려놓는 것
트랜잭션의 결과를 허용하거나 취소하는 목적으로 사용되는 언어를 지칭
TCL 명령어
- 커밋(Commit) : 확정
- 롤백(Rollback) : 트랜잭션 처리중 오류가 발생했을때, 오류이전의 특정시점 사앹로 되돌려주는 제어어
- 체크포인트(checkpoint, Savepoint) : 저장시기 설정
다수 사용자 환경에서 여러 트랜잭션을 수행할때, 데이터베이스 일관성 유지를 위해 상호작용을 제어하는 기법
병행제어 미보장 문제점 (정처기에 나올 확률은 낮음)
- 갱신손실
- 현황파악오류
- 모순성
- 연쇄복귀
로킹(locking) : 같은 자원을 액세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
특징
- 데이터베이스, 파일, 레코드 등은 로킹 단위가 될 수 있음
- 로킹 단위가 작아지면 로킹 오버헤드가 증가
- 한꺼번에 로킹할 수 있는 객체의 크기를 로킹단위라고 함
낙관적 검증(validation) : 트랜잭션이 어떠한 검증도 수행하지 않고, 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법
타임스탬프순서(Timestamp ordering) : 트랜잭션과 트랜잭셕이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임 스탬프를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
다중버전 동시성 제어(Mvcc) : 트랜잭션의 타임스탬프와 접근라혀는 데이터의 타임스탬프를 비교하여 직렬가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법
고립화수준은 다른 트랜잭션이 현재의 데이터에 대한 무결성을 해치지 않기 위해 잠금을 설정하는 정도
고립화수준 종류
Read unCommitted : 한 트랜잭션에서 연산중인(아직 커밋되지 않은) 데이터를 다른 트랜잭션이 읽는 것을 허용하는 수준
Read Commited : 한 트랜잭션에서 연산을 수행할때, 연산이 완료될때까지 연산 대상 데이터에 대한 읽기를 제한하는 수준
Repeatable Read : 선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신 및 삭제를 제한하는 수준
Serializable Read : 선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때, 해당 데이터 영역 전체에 대한 접근 제한하는 수준
회복 기법은 트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업
회복기법 종류
- 로그기반
- 즉시갱신 : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법, 되돌리기 위해선 undo
- 지연갱신 : 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법
- 체크포인트 : wkddo 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전의 상태로 복원시키는 회복 기법
- 그림자페이지 : 데이터베이스 트랜잭션 수행 시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법