DB 이야기

디비 이야기 23. 트랜젝션

김푸른초푸른 2020. 3. 11. 23:18

1. 트랜젝션이란?

= 데이터의 DML과 관련된 논리적 작업 && 동시성 제어를 위한 개념이다


2. 트랜젝션의 특징 

1) 데이터 무결성이 보장된 상태에서 DML 작업을 완수위한 기본작업

2) 관계형 데이터베이스 시스템은 데이터 처리시 트랜젝션을 통하여 정상종료(동기), 비정장종료(비동기)에 대해 

데이터의 신뢰성과 일관성을 보장해준다 

3) 실무에서 데이터를 SELECT로 조회하고 DML로 실행하여 종료하는 과정을 트랜젝션이라고 한다

4) 마지막으로 COMMIT(완료) || ROLLBACK(철회)로 처리한다 


3. 트랜젝션 특징 용어 

1) 원자성 : 트랜젝션 처리가 끝나지 않았을 경우, 전혀 이루어지지 않은 것과 같아야한다

-> 아무일도 없어야한다 (ROLLBACK으로 되돌린다)

EX) 계좌 이체시 오류가 발생했을시 되돌린다


2) 일관성 : 트랙젝션이 정상적으로 완료되었을 경우 모순없이 일관성이 있어야한다

EX) A가 B에게 돈을 입금했을시 A의 계좌에서 마이너스 금액이 표시되어야하고 B의 계좌에서는 플러스 금액이 표시뇌어야한다


3) 고립성 : 다른 곳에서 남의 트랜젝션을 볼 수 없다

4) 지속성 : 트랙젝션 결과를 영구히 보존한다


4. 트랜젝션 제어어(TCL)

[트랜젝션 수행과정]

실행 -> 부분완료 : DML 등 트랜젝션 명령 실행 후 상태 -> 완료(COMIIT) : 트랜젝션 성공적으로 완료

     -> 실패 -> 철회(ROLLBACK) : 트랜젝션을 복원하여 원래대로 되돌린다 

 

5. TCL 종류

1) COMMIT : 트랜젝션의 모든 미결정 데이터를 영구히 반영하므로 트랜젝션 종료(저장)

2) ROLLBACK : 트랙젝션의 모든 미결정 데이터를 포기하고 원래대로 되돌린다

3) SAVEPOINT : ROLLBACK시 저장점을 두어 일부만 ROLLBACK을 할 수 있게 한다 

=  SAVE TRANSACTION 

EX) SAVEPOINT 명칭 

[롤백시 처리] 

= ROLLBACK TO SAVEPOINT 명칭 


6. 동시성 제어

= 동시에 진행되는 여러 트랜젝션의 작업이 성공적으로 마칠 수 있게 도와준다

-> 사용자나 APP는 동시에 여려명이 DBMS에 접근하여 작업이 진행된다 


7. 동시성 제어 목적 

= 데이터 불일치 방지 목적


8. 동시성 제어 종류

1) 락킹 

= 데이터에 잠금을 설정하여 해제될때까지 수정, 삭제, 접근이 불가

2) 타임스탬프 

= 트랜젝션에 번호를 부여하여 접근 순서를 미리 정한다 

3) 적합성 검증

= 먼저 트랜젝션을 수행하고 종료시 적합성을 검증하여 최종적으로 반영한다 

-> 조건에 맞는지 검사를 의미 


9. ROLLBACK 원리 

트랜젝션 시작 -> INSERT  -> SAVEPOINT A -> UPDATE -> SAVEPOINT B -> DELETE -> 현위치