티스토리 뷰

CS/DB

트랜잭션 (Transaction)

bool-flower 2022. 10. 8. 03:39

트랜잭션

  • 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위

특징

원자성(Atomicity)

  • 트랜잭션의 작업이 모두 수행되거나, 모두 수행되지 않는 것
  • 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야하고, 하나라도 오류가 발생하면 전부 취소되어야 함

일관성(Consistency)

  • 데이터베이스의 상태는 일관되어야 함. 트랜잭션의 처리 전, 후 데이터베이스의 상태는 항상 유효해야 함을 의미
  • 트랜잭션 처리 후 여전히 데이터베이스의 제약조건 및 데이터 규칙에 위배되지 않는 것

격리성(Isolation)

  • 트랜잭션은 다른 트랜잭션으로부터 독립(및 격리)되어있어야 하는 것
  • 여러 개의 트랜잭션은 서로 격리되어 마치 순차적으로 실행되는 것처럼 작동
  • 여러 개의 격리 수준으로 나뉘어 격리성을 보장

지속성(Durability)

  • 성공적으로 수행된 트랜잭션은 영구적으로 반영되어야 하는 것
  • 데이터베이스에 시스템 장애가 발생해도 원래 상태로 복구하는 회복 기능이 있어야 함. 이를 위해, 체크섬, 저널링, 롤백 등을 활용
  • 체크섬 : 중복 검사의 한 형태로, 오류 정정을 통해 송신된 자료와 무결성을 보호하는 단순한 방법
  • 저널링 : 파일 시스템 또는 데이터베이스 시스템에 변경 사항을 반영(Commit) 하기 전에 로깅하는 것, 트랜잭션 등 변경 사항에 대한 로그를 남기는 것

커밋

  • 한 트랜잭션이 성공적으로 처리되었다고 확정하는 연산. 수행된 커밋은 데이터베이스에 영구 저장되어 일관된 상태를 유지
  • 커밋이 수행되었다”를 “하나의 트랜잭션이 성공적으로 수행되었다”라고도 말함.

롤백

  • 트랜잭션으로 처리한 하나의 묶음 과정이 일어나기 전으로 돌리는 일(취소)을 말한다.
  • 비정상적인 트랜잭션 처리가 발생해 데이터베이스의 일관성을 깨뜨기러나 여러 이슈 때문에 트랜잭션 전으로 돌려야 하는 경우 사용

커밋과 롤백 덕에 데이터의 무결성이 보장된다. 또한, 데이터 변경 전에 변경 사항을 쉽게 확인할 수 있고 해당 작업을 그룹화할 수 있다. 이 때문에 트랜잭션으로 묶는 로직에 외부 API호출은 자제해야 한다. (롤백도 생각해야 하기 때문)

무결성

  • 데이터의 정확성, 일관성이 유지되는 것. 무결성이 유지되어야 저장된 데이터 값과 그 값에 해당하는 현실 세계의 실제 값이 일치하는지 신뢰할 수 있음
  • 개체 무결성, 참조 무결성, 도메인 무결성, null 무결성, 고유 무결성이 있음

트랜잭션 전파

  • 여러 트랜잭션 관련 메서드의 호출을 하나의 트랜잭션에 묶이도록 하는 것
  • Spring 에서는 @Transactional 을 통해 트랜잭션 전파를 지원함

'CS > DB' 카테고리의 다른 글

데이터베이스 커넥션 풀, DBCP(DataBase Connection Pool)  (0) 2022.10.27
DB의 Lock  (0) 2022.10.08
MySQL 아키텍처  (0) 2022.08.04
조인 수행 원리  (0) 2022.08.02
이상현상, 함수종속성, 정규화  (0) 2022.07.28
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday