반응형
트랜잭션이란?
- 데이터베이스의 DML, 즉 삽입, 갱신, 삭제와 관련된 논리적인 작업을 의미함
- 트랜잭션은 DML 실행과 동시성 제어를 위한 중요한 개념임
- 데이터베이스의 데이터 무결성이 보장되는 상태에서 DML 작업을 완수하기 위한 기본 작업 단위임
- 일반적으로 DML 실행과 실행에 대한 커밋/롤백 단계까지를 트랜잭션이라고 부르지만, 실무에서는 데이터베이스에서 select 문으로 데이터를 조회하고 DML을 실행하여 종료하는 과정까지를 트랜잭션이라고 부름
트랜잭션의 특징
개 념 | 내 용 |
원자성(Atomicity) | 트랜잭션의 처리가 완전히 끝나지 않았을 경우에는 전혀 이루어지지 않은 것과 같아야 함 |
일관성(Consistency) | 트랜잭션의 실행이 성공적으로 완료되면 데이터베이스는 모순 없이 일관성이 보존된 상태여야 함 |
고립성(solation) | 어떤 트랜잭션도 다른 트랜잭션의 부분벅 실행 결과를 볼 수 없음 |
지속성(Durability) | 트랜잭션이 성공하면 트랜잭션읙 결과를 영구적으로 보장함 |
트랜잭션의 상태 변화와 트랜잭션 제어어
상태 | 설명 |
실행(active) | 트랜잭션을 실행 중 |
부분 완료(parially commited) | DML 등 트랜잭션의 명령을 실행한 후의 상태 |
완료(committed = 커밋) | 트랜잭션이 성공적으로 완료 |
실패(failed) | 더 이상 정상적으로 실행될 수 없음을 발견 |
철회(aborted = 롤백) | 트랜잭션이 복원되어 트랜잭션 수행 이전 상태로 돌아감 |
커밋과 롤백 자세히
개념 | 설명 |
커밋(commit) | 트랜잭션의 모든 미결정 데이터를 영구적으로 반영함으로싸 트랜잭션을 종료함 (저장과 유사) |
롤백(rollback) | 트랜잭션의 모든 미결정 데이터 변경을 포기함으로써 트랜잭션을 종료함 (되돌리기와 유사) |
커밋 이전 | 커밋 이후 |
- 데이터 변경 이전의 상태로 복구가 가능(롤백) - 현재 사용자만 DML 작업의 결과를 확인 - 다른 사용자는 확인 불가 - 변경 중인 행은 접근 제어되어 다른 사용자가 변경 불가 |
- 데이터베이스에 데이터를 영구적으로 변경/적용 - 기존 데이터는 상실 - 모든 사용자가 결과 확인 가능 - 접근 제어가 해지되어 다른 사용자가 변경 가능 |
동시성 제어
동시에 실행되는 여러 개의 트랜잭션이 작업을 성공적으로 마칠 수 있도록 지원함
주로 트랜잭션 직렬화(serialization)을 보장하는 동시성 제어를 통해 트랜잭션을 정상적으로 수행함
제어 기법 | 설명 |
락킹(locking) | 트랜잭션이 데이터에 잠금(locking)을 설정하면 다른 트랜잭션은 해당 데이터에 대해 잠금이 해제(unlock)될 때까지 접근/수정/삭제가 불가함 |
타임스탬프(timestamp) | 시스템에서 생성하는 고유 번호인 타임스탬프를 트랜잭셩에 부여함으로싸 트랜잭션 간의 접근 순서를 미리 정함 |
적합성(validation) 검증 | 먼저 트랜잭션을 수행하고 트랜잭션을 종료할 때 적합성을 검증하여 데이터베이스에 최종 반영함 |
반응형
'DBMS' 카테고리의 다른 글
[이론 정리] 옵티마이저 간단하게 보기, 정의 & 방식 / 인덱스 (0) | 2022.09.18 |
---|---|
[이론 정리] 뷰, 가상테이블을 사용하는 이유와 특징, 종류 (0) | 2022.09.18 |
[개념 구분] delete, truncate, drop 구분해서 사용하기 (0) | 2022.09.17 |
[이론 정리] 데이터 무결성 (0) | 2022.09.17 |
DBeaver와 DB 연결 (Mariadb) (0) | 2021.07.04 |