트랜잭션을 공부하면서 나온 undo, redo 에 대해서 알게되어 정리를 해보려고한다.
트랜잭션이란?
데이터베이스 트랜잭션(Database Transaction)은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다.
이론적으로 데이터베이스 시스템은 각각의 트랜잭션에 대해 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 영구성(Durability)을 보장한다. 이 성질을 첫글자를 따 ACID라 부른다. 그러나, 실제로는 성능향상을 위해 이런 특성들이 종종 완화되곤 한다.
어떤 시스템들에서는 트랜잭션들은 논리적 작업 단위(LUW, Logical Units of Work)로 불린다
여기서 ACID 는 데이터베이스의 트랜잭션의 기본 구성요소 4가지를 의미한다.
1. Atomicity 원자성 : 하나의 트랜잭션은 모두 완료되거나 모두 취소되어야 한다.
2. Consistency 일관성 : 사용되는 데이터는 모두 일관되어야 한다.
3. Isolation 격리성 : 각각의 트랜잭션은 다른 트랜잭션에 영향을 주거나 받지않고 독립적으로 수행되어야 한다.
4. Durability 영속성 : 트랜잭션이 정상적으로 종료되면 그 결과는 데이터베이스에 영구적으로 적용되어야 한다.
https://ko.wikipedia.org/wiki/데이터베이스_트랜잭션
Undo
Undo는 "원상태로 되돌리다"라는 의미이다. 따라서 undo 작업은 복구, 롤백을 의미한다.
Redo
Redo는 "다시 하다"라는 의미이다. 즉, 트랜잭션을 재수행해서 복수하는 것을 의미한다.
둘의 차이는 그림으로 한 눈에 볼 수 있다.
위의 그림에서,
- 트랜잭션 T1
check point 이전에 실행이 완료되었으므로 failure 되더라도 이미 disk에 저장이 된 상태이므로 회복을 하지 않습니다. - 트랜잭션 T2
check point 이전에 실행된 내용은 disk에 반영이 되었으므로 check point 이후의 내용을 log를 따라가는 redo를 수행합니다. - 트랜잭션 T3
failure 시점에 실행중이였으므로 check point 시점으로 undo한 후, 트랜잭션을 재실행합니다. - 트랜잭션 T4
check point 이후에 실행됐고 failure 시점 전에 실행이 끝났으므로 redo를 수행합니다. - 트랜잭션 T5
check point 이후에 실행됐고 failure 시점에 실행중이였으므로 시작지점까지 undo한 후, 트랜잭션을 재실행합니다.
즉 요약을 하자면!!
- rcheck point 이후에 log기록을 보면서 완료되지 않은 트랜잭션에 대해서 수행
- redo : commit 된것을 다시 실행
- undo : 트랜잭션은 시작 됬지만 commit되지 않은 것을 연산 취소
*참고 : https://writemylife.tistory.com/50
'스터디 > Database' 카테고리의 다른 글
[DB] Locking (잠금 기법) (0) | 2021.05.28 |
---|---|
[DB] 데이터 정규화 1NF, 2NF, 3NF, BCNF (0) | 2021.05.28 |
DL (Data Lake) (0) | 2020.04.20 |
DM (Data Mart) (0) | 2020.04.20 |
OLTP / OLAP (0) | 2020.04.20 |
댓글