※ 원티드 프리온보딩 2월 "MySQL 잘 사용하기" 학습내용 2일차 - 1
◎ Transaction
◎ Transaction의 특징 (ACID)
-
Atomicity(원자성)
- 하나의 트랜잭션에 속해있는 모든 작업이 전부 성공하거나 전부 실패해야함
- 결과가 예측 가능함 : 전부 성공하여 다 되거나 하나도 안됨
-
Consistency(일관성)
- 데이터베이스의 상태가 일관적 : 하나의 트랜젝션 이후 데이터베이스의 상태는 이전과 같이 유효
- 트랜젝션 이후에도, 데이터베이스가 가지고 있는 기본적인 제약은 지켜져야함
- ex) non-nullable 한 데이터를 null로 만들 수 없다.
-
Isolation(격리성, 고립성)
- 모든 트랜잭션은 다른 트랜잭션으로부터 독립적
- 한 트랜젝션이 다른 트렌젝션에 영향을 줄 수 없다.
- 만약 서로 영향을 주게 된다면 실패로 간주하게 됨
-
Durability(지속성)
- 하나의 트랜잭션이 성공적으로 수행되었다면, 해당 트랜잭션에 대한 로그가 남아야 한다.
- 런타임 오류나 시스템 오류가 발생하더라도, 해당 기록은 영구적이어야 함
◎ Transaction States
◎ ROLLBACK의 구현 방법 - Undo Log
-
Undo Log
- 행 취소 로그 레코드의 집합
- Transaction 실행후 Rollback 시 Undo Log 를 참조해 이전 데이터로 복구할수 있도록 로깅 해놓은 영역
-
Undo Log 특징
- 실제 변경되는 컬럼의 변경되기 이전값과 PK 값만 저장
- ex) user 테이블에서 age 값만 변경했다고 가정하면 변경 이전에 age 에 대한값과 PK 값만 Undo Log 레코드에 들어가게 된다.
◎ 참고 자료