트랜잭션은 하나의 논리적 작업 단위로 수행되는 일련의 작업입니다. 작업의 논리적 단위는 ACID(원자성, 일관성, 격리성 및 영속성) 속성이라고 하는 네 가지 속성을 통해 트랜잭션으로서의 자격을 부여합니다.
원자성
트랜잭션은 원자 단위여야 합니다. 모든 데이터 수정이 수행되거나 모두 수행되지 않습니다.
do all or do nothing
일관성
완료되면 트랜잭션은 모든 데이터를 일관된 상태로 유지해야 합니다. 관계형 데이터베이스에서는 트랜잭션 수정에 모든 규칙을 적용하여 모든 데이터 무결성을 유지해야 합니다.
B-트리 인덱스 또는 이중으로 연결된 목록과 같은 모든 내부 데이터 구조는 트랜잭션이 끝날 때 정확해야 합니다.
격리
동시 트랜잭션에 의한 수정은 다른 동시 트랜잭션에 의한 수정과 격리되어야 합니다. 트랜잭션에서 다른 동시 트랜잭션이 수정하기 전 상태의 데이터를 보거나 두 번째 트랜잭션이 완료된 후의 데이터를 볼 수는 있지만 중간 상태는 볼 수 없습니다. 이는 시작 데이터를 다시 로드하고 일련의 트랜잭션을 재생하여 원래 트랜잭션이 수행된 후와 동일한 상태의 데이터로 끝날 수 있기 때문에 직렬화 기능이라고 합니다.
영속성
완전한 지속형 트랜잭션이 완료되면 그 영향은 영구적으로 시스템에 적용됩니다.
'┝ DB > ┝ RDBMS' 카테고리의 다른 글
[jpa] No property '' found for type '' (0) | 2025.01.25 |
---|---|
[spring boot] mariaDB, JPA 적용 (0) | 2025.01.23 |
[spring boot] 셋업 - JPA와 Driver의 차이 (0) | 2025.01.22 |
[SpringBoot] MyBatisSystemException과 org.springframework.dao.UncategorizedDataAccessException (1) | 2024.11.01 |
[mySQL] auto increment된 키 값 바로 받아오는 세가지 방법 (param, vo, map) (1) | 2024.10.16 |