-
(7) DB TransactionCS 지식/○ Database 2021. 7. 7. 00:02
1. 트렌젝션이란?
1-1) 정의
데이터베이스의 상태를 변화시킬 때 수행하는 정해진 "작업 단위"를 의미
이때 작업은 다음의 CRUD의 SQL 문을 의미
- SELECT
- INSERT
- DELETE
- UPDATE1-2) 용어
(a) 트랜잭션 특징
ACID 특성
- 원자성(Atomicity)
이분적인 상태를 의미
트랜잭션이 DB에 모두 반영(Commit)되거나, 혹은 반영되지 않아야(Rollback) 함 - 일관성(Consistency)
트랜잭션의 작업 처리 결과는 항상 일관성이 있어야 함 - 독립성(Isolation)
둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때
어떠한 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없음
(OS 데이터 정합성-세마포어 뮤텍스와 비슷) - 지속성(Durability)
트랜잭션이 성공적으로 완료된 경우, 결과가 DB에 영구적으로 반영되어야 함
(b) 원자성
(1) Commit
하나의 트랜잭션이 성공적으로 끝나고, DB가 일관성이 있는 상태일 때 이를 정의하기 위한 용어 및 작업 상태를 의미
(2) Rollback하나의 트랜잭션이 비정상적으로 종료되어 트랜잭션의 원자성이 깨진 경우
해당 트랜잭션 시작 상태로 roll-back하여 다시 consistent한, 일관성 있는 상태로 되돌아오는 것을 정의하는 용어및 그 작업 상태를 의미
1-3) 작업 단위
보통 개발자들이 의미있는 작업단위를 정의하여 1 transaction 이라고 함
예시) 사용자 A가 사용자 B에게 만원을 송금한다.
* 이때 DB 작업
- 1. 사용자 A의 계좌에서 만원을 차감한다 : UPDATE 문을 사용해 사용자 A의 잔고를 변경
- 2. 사용자 B의 계좌에 만원을 추가한다 : UPDATE 문을 사용해 사용자 B의 잔고를 변경
현재 작업 단위 : 출금 UPDATE문 + 입금 UPDATE문 → 이를 통틀어 하나의 트랜잭션이라고 한다.
- 위 두 쿼리문 모두 성공적으로 완료되어야만 "하나의 작업(트랜잭션)"이 완료되는 것이다. `Commit`
- 작업 단위에 속하는 쿼리 중 하나라도 실패하면 모든 쿼리문을 취소하고 이전 상태로 돌려놓아야한다. `Rollback`2. 트랜잭션 관리를 위한 DBMS전략
2-1) DBMS의 구조
(a) 정의
1. Query Processor (질의 처리기)
2. Storeage System (저장 처리기)으로 이루어 짐
(b) 저장 방식
1. 입출력 단위 : 고정 길이의 "page" 단위로 disk에 읽거나 씀
2. 저장공간 : 주로 보조메모리 disk에 비휘발성 메모리에 저장하며, 일부분을 Main memory 주메모리 버퍼에 저장
2-2) Page Buffer Manager OR Buffer Manager
(a) 정의
DBMS의 Storeage System에 속하는 모듈 중 하나로
Main Memory에 올라가있는 일부 페이지를 관리하는 모듈
Buffer 관리 정책에 따라, UNDO / REDO 작업과 복구가 필요할 때
수행가능 여부가 결정되므로, 이는 transaction에서 중요한 요소임!3. Recovery
DB오류시 복구하는 과정
3-1) REDO
(a) 정의
다시 수행한다는 의미를 가짐
- 복구의 역할
1. REDO 데이터를 이용해서 마지막 checkpoint -> 장애 시점까지의 DB BUFFER CACHE를 복구2. 1)에서 복구된 UNDO를 가지고 commit 되지 않은 데이터를 rollback하여 모두 복구함
- 어떤 작업이 진행되든 REDO에 기록됨
- 사용자가 했던 transaction을 다시 반복3-2) UNDO
(a) 정의
다시 원상태로 되돌리는 의미를 가짐
- 복구의 역할
- 작업 롤백, 읽기 일관성, 복구를 수행
- 사용자 작업을 반대로 진행하여 원상태로 돌림
(b) 기록
- INSERT : insert된 row의 rowid 기록
- UPDATE : 바뀐 컬럼의 바뀌기 전 값을 기록
- DELETE : 지워진 모든 데이터 기록
(c) UNDO 과정
참조
https://gyoogle.dev/blog/computer-science/data-base/Transaction.html
https://brownbears.tistory.com/181
반응형'CS 지식 > ○ Database' 카테고리의 다른 글
(9) Redis (0) 2021.07.10 (8) 트랜잭션 격리 수준 (0) 2021.07.07 (6) Index (0) 2021.07.03 (5) SQL Anomaly (0) 2021.07.03 (4) SQL vs NO-SQL (0) 2021.07.02 - 원자성(Atomicity)