티스토리 뷰
트랜잭션
- DB에서 데이터의 일관성과 무결성을 보장
- 하나의 그룹으로 처리되어야 하는 명령어를 모아놓은 작업 단위
e.g) 하나의 그룹이 4개의 SQL문으로 이루어졌을 경우, 4개의 SQL문이 완전히 처리가 되거나 아니면 하나도 수행이 되지 말아야함(All-OR-Nothing) - 일반적으로 Begin_transaction과 End_transaction으로 나뉘어 트랜잭션 그룹 내에서 처리해야할 명령어들을 기술
트랜잭션 단위
- 장애 발생 시 복구 작업을 할 때 사용
- 병행 제어 시 논리 작업 단위로 사용
- 데이터베이스의 일관성과 무결성을 유지하기 위해 여러개의 트랜잭션 단위를 잘 정의해두어야함!
트랜잭션 예시
A가 B에게 100,000원을 이체하는 경우 하나의 트랙잰션에 들어가는 4개의 SQL문을 정의
- Select - A계좌 잔액 검색, B계좌 잔액 검색
- Update - A계좌에서 100,000원 인출
- Update - B계좌에 100,000원 입금
- Select - A계좌 잔액 검색, B계좌 잔액 검색
1,2 번까지 잘 수행되었다가 3번작업에서 중단되었다면
👉 2번까지의 모든 작업을 취소하고 트랙잰션 작업 전 데이터베이스의 상태로 돌아감
트랜잭션 명령어
- COMMIT
- SAVEPOINT
- ROLLBACK
COMMIT
- 모든작업을 정상적으로 처리하겠다고 확정하는 명령어
- 트랜잭션 작업 내용(INSERT, UPDATE, DELETE)을 데이터베이스에 반영(변경된 내용을 영구 저장)
- COMMIT을 수행하면 하나의 트랜잭션 과정을 종료하게됨
- 모든 사용자가 변경한 결과를 보게 됨
- DDL과 DCL 명령문이 수행된 경우 자동 COMMIT됨
ROLLBACK
- 작업 중 문제가 발생했을때, 트랜잭션 처리 과정에서 발생한 변경 사항을 모두 취소하고, 트랜잭션을 종료
- 하나의 묶음(트랜잭션)처리가 시작되기 이전 상태로 되돌아감
- 이전 COMMIT 한 곳 까지만 복구
- 문제가 발생하면 논리적인 작업의 단위를 모두 취소
- 비정상적으로 컴퓨터가 종료된경우 자동 ROLLBACK됨
장점
- 데이터 무결성을 보장
- 영구적으로 변경하기 전에 데이터의 변경사항을 확인할 수 있음
- 연관된 작업(SQL문)을 논리적으로 그룹화
출처
'데이터베이스' 카테고리의 다른 글
[MySQL] Multi Column Index(복합 인덱스) (0) | 2024.09.25 |
---|---|
[MySQL] Clusterd Index와 Non-clustered Index, B-Tree (1) | 2024.09.24 |
데이터 이력관리 - 점이력, 선분이력 (0) | 2023.02.11 |
데드락(Deadlock, 교착상태)의 개념과 해결 방법 (0) | 2022.06.26 |
[Oracle] DUAL 테이블의 개념과 사용법 (0) | 2022.06.25 |
Comments