철학과 학생의 개발자 도전기

트랜잭션 본문

데이터베이스

트랜잭션

Younghun 2023. 10. 29. 11:18

1. 트랜잭션

  • 데이터를 처리하는 하나의 논리적 작업 단위
  • 트랜잭션 내의 모든 연산은 한꺼번에 수행되거나 모두 수행되지 않아야 한다.
  • 트랜잭션이 성공적으로 완료된 후에는 결과가 영구적으로 반영되어야 한다.

2. ACID 특징

  • 원자성(Atomicity): 트랜잭션 전체가 반영되거나 반영되지 않아야 한다.
  • 일관성(Consistency): 의도하지 않은 데이터 손상으로 무결성을 해치지 않아야 한다.
  • 고립성(Isolation): 트랜잭션은 서로의 연산을 방해하지 않아야 한다.
  • 지속성(Durability): 트랜잭션 수행 결과가 시스템에 적용되는 것을 보장해야 한다.

3. Commit과 Rollback

  • Commit: 하나의 트랜잭션이 끝났음을 알려주는 연산. 트랜잭션 결과가 시스템에 반영된다.
  • Rollback: 트랜잭션이 비정상적으로 종료됐을 경우, 트랜잭션이 실행되기 전 상태로 되돌리는 연산.

4. 트랜잭션 격리수준

  • 여러 트랜잭션이 동시에 데이터베이스에 접근할 때, 어느 정도까지 서로의 영향을 받을지를 결정하는 것
  • SQL 표준 - Read Uncommitted, Read Committed, Repeatable Read, Serializable

Read Uncommitted

다른 트랜잭션의 변경 내용이 커밋되지 않아도 읽을 수 있다. -> “Dirty Read”

Read Commited

커밋된 내용만 읽을 수 있지만, 한 트랜잭션 내에서 같은 데이터를 두 번 조회했을 때 다른 결과가 나오는 현상이 발생할 수 있다.

-> "Non-Repeatable Read"

Repeatable Read

Non-Repeatable Read 문제를 해결한다. 자신보다 낮은 번호의 트랜잭션 결과만 사용한다.

새로운 레코드 삽입 시 이전과 다른 데이터 집합이 조회되는 현상이 발생할 수 있다. -> "Phantom Read"

Serializable

특정 트랜잭션에서 읽고 있는 데이터는 다른 트랜잭션에서 수정/삭제/삽입이 불가능하다.

-> Dirty Read, Non Repeatable Read, Phantom Read 모두 해결

성능이 떨어져서 잘 사용되지 않는다.


 

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

옵티마이저  (0) 2023.11.05
Lock과 MVCC  (0) 2023.11.05
인덱스  (0) 2023.10.28
이상과 정규화  (0) 2023.10.27
DBMS와 RDB의 키  (0) 2023.10.19