데이터베이스

트랜잭션

iksadnorth 2023. 7. 23. 23:55

👣 정의

DB에서 논리적 기능을 수행하기 위한 작업의 단위

👣 ACID 특징

1. Atomicity - 원자성

트랜잭션은 해당 작업 내의 모든 연산이 전부 적용되거나 전부 적용되지 않거나 둘 중 하나여야 함.
애매하게 작업 중간까지만 적용되는 경우는 없어야 한다.

2. Consistency - 일관성

트랜잭션이 수행이 되어도 되지 않아도 데이터의 제약 조건은 언제나 지켜져야 함.
예를 들어, 회원 테이블의 '나이' 속성의 제약 조건은 '0 이상 100 이하'라는 제약조건이 있을 때,
나이를 수정하는 트랜잭션이 수행되기 전이나 후나 위 제약 조건을 충족해야 한다는 것이다.

3. Isolation - 격리성

트랜잭션이 병렬적으로 수행되어도 커밋 이전의 결과가 서로에게 영향을 주면 안 됨.
물론 무작정 연산 자체를 직렬로 수행하는 것이 격리성을 지키는 것에 도움을 주겠지만
이러면 성능이 매우 좋지 못하기에 여러 가지 타협을 할 수 있다.
이런 타협의 수준을 격리 수준이라고 한다.

4. durability - 지속성

트랜잭션이 성공적으로 수행되면 이 결과가 영원히 DB에 반영되어야 함.
이는 장애가 발생해도 원래 상태로 복구하는 회복 기능이 있어야 한다는 뜻이다.

👣 무결성

데이터의 정확성, 일관성, 유효성이 유지되는 것을 의미.

  • 개체 무결성
    기본키는 Null 값 혹은 중복값을 허용하지 않는다.
  • 참조 무결성
    서로 참조 관계에 있는 두 테이블의 데이터는 일관된 값을 유지해야 한다.
  • 고유 무결성
    Unique 제약 조건이 걸린 경우, 고유한 값을 가져야 한다.
  • Null 무결성
    Not Null 제약 조건이 걸린 경우, 빈 값이면 안 된다.

'데이터베이스' 카테고리의 다른 글

데이터베이스 종류  (0) 2023.07.24
트랜잭션 격리 수준  (0) 2023.07.24
정규화 과정  (0) 2023.07.23
데이터 베이스 용어 정리  (0) 2023.07.23
MySQL 스키마 일괄 생성  (0) 2023.07.13