데이터베이스/데이터베이스 공부

트랜잭션과 무결성(트랜잭션, 원자성, 일관성, 고립성, 지속성, 무결성)

아밍나 2022. 8. 18. 22:31
728x90

트랜잭션

트랜잭션: 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 최소 단위. 여러 개의 쿼리들을 하나로 묶는 단위를 말한다.

트랜잭션의 특성(ACID)

- 원자성(Automicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)

 

1) 원자성(Automicity)

원자성: 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되든지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (all or nothing)

 - 커밋(commit)과 롤백(rollback)

커밋: 여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어. 트랜잭션 단위로 수행되며 변경된 내용이 모두 영구적으로 저장되는 것을 말한다.

커밋이 수행되었다. = 하나의 트랜잭션이 성공적으로 수행되었다.

롤백: 트랜잭션으로 처리한 하나의 묶음 과정을 일어나기 전으로 돌리는 일.

→ 커밋과 롤백 덕에 데이터의 무결성이 보장된다.

2) 일관성(Consistency)

일관성: 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안 된다.

3) 고립성(isolation)

고립성: 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안 된다.

→ 트랜잭션 수행 시 서로 끼어들지 못함.

   - 트랜잭션에 대한 고립성이 낮은 경우 발생할 수 있는 문제점 

Dirty Read
   : 다른 트랜잭션에 의해 수정되었고 아직 커밋이 되지 않은 데이터를 읽는 것.
Non-Repeatable Read
   : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 그 사이에 다른 트랜잭션이 값을 수정 또는 삭제하는 바람에 두 쿼리 결과가 다르게 나타나는 현상.
Phantom Read
   : 한 트랜잭션 내에서 같은 쿼리를 두 번 수행했는데, 첫 번째 쿼리에서 없던 유령(Phantom) 레코드가 두 번째 쿼리에서 나타나는 현상.

4) 지속성(durability)

지속성: 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

→ 데이터베이스에 시스템 장애가 발생해도 원래 상태로 복구하는 회복 기능이 있어야 함.

→ 체크섬, 저널링, 롤백 기능 제공

 -  체크섬과 저널링

체크섬: 중복 검사의 한 형태로, 오류 정정을 통해 송신된 자료의 무결성을 보호하는 단순한 방법
저널링: 파일 시스템 또는 데이터베이스 시스템에 변경 사항을 반영(commit)하기 전에 로깅하는 것, 트랜잭션 등 변경 사항에 대한 로그를 남기는 것.

무결성

무결성: 데이터의 정확성, 일관성, 유효성을 유지하는 것.

무결성의 종류

개체 무결성: 기본키로 선택한 필드는 빈 값을 허용하지 않는다.
참조 무결성: 서로 참조 관계에 있는 두 테이블의 데이터는 항상 일관된 값을 유지해야 한다.
고유 무결성: 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우 그 속성 값은 모두 고유한 값을 가진다.
NULL 무결성: 특정 속성 값에 NULL이 올 수 없다는 조건이 주어진 경우 그 속성 값은 NULL이 될 수 없다는 제약 조건.

 

728x90
반응형