본문 바로가기
Study

[ CS ] 1월 30일 6주차 문제

by ウリ김영은 2024. 1. 23.

1. 트랜잭션이란?

데이터베이스의 상태를 변화시키는 하나의 논리적 기능을 구성하는 일련의 연산들의 집합을 의미한다.
(데이터 베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위)

2. 트랜잭션의 특징은?

  • Atomicity 원자성
    트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 한다.(부분적으로 실행되거나 중단되지 않는것을 보장)
    어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소된다.
    모두 실패해서 Rollback 되거나, 모두 성공해서 Commit 이 된다.(all or nothing)
    트랜잭션 전파

  • Consistency 일관성 : 허용된 방식으로만 데이터를 변경해야 하는 것
    트랜잭션의 작업 처리 결과는 항상 일관성을 유지해야 한다.
    데이터베이스에서 정한 무결성 제약 조건을 만족해야 한다.

  • Isolation 격리성, 독립성
    트랜잭션 수행 시 서로 끼어들지 못하는 것
    복수의 병렬 트랜잭션은 서로 격리되어 마치 순차적으로 실행되는 것처럼 작동되어야 하고, 데이터베이스는 여러 사용자가 같은 데이터에 접근할 수 있어야 합니다.
    수행 중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션의 수행 결과를 참조할 수 없다.
    트랜잭션 격리 수준을 선택할 수 있다. => 격리성 보장

  • Durability 지속성
    성공적으로 완료된 트랜잭션의 결과는 시스템이 고장 나더라도 영구적으로 반영되어야 한다.
    (중간에 시스템에 문제가 발생해도 데이터베이스 로그 등을 사용해서 성공한 트랜잭션 내용을 복구할 수 있다.)

3. 트랜잭션 격리 수준에 따라 발생하는 현상들

(레벨 올라갈수록 격리성 강해지고, 동시성은 약해진다.)

  1. READ uncommitted (LEVEL 0) => 팬텀리드, 반복 가능하지 않은 조회, 더티 리드 발생
  2. READ committed (LEVEL 1) => 팬텀 리드, 반복 가능하지 않은 조회 발생
  3. REPEATABLE READ (LEVEL 2) => 팬텀리드 발생
  4. SERIALIZABLE (LEVEL 3)

3-1. 더티리드란?

더티 리드는 특정 트랜잭션에 이해 데이터가 변경되었지만, 아직 커밋되지 않은 상황에서 다른 트랜잭션이 해당 변경 사항을 조회할 수 있는 문제를 말한다.
이 문제는 트랜잭션 A가 데이터를 변경하고 커밋하지 않은 시점에 트랜잭션 B가 변경된 데이터를 읽어온 상황에서, 트랜잭션 A가 변경 내용을 커밋하지 않고 롤백한 상황에서 치명적이다. 트랜잭션 B는 무효가 된 값을 읽고 처리하므로 문제가 발생한다.

3-2. 반복 가능하지 않은 조회란?

같은 트랜잭션 내에서 같은 데이터를 여러번 조회했을 때 읽어온 데이터가 다른 경우를 의미한다.

3-3. 팬텀 리드란?

조회해온 결과의 행이 새로 생기거나 없어지는 현상이다.

'Study' 카테고리의 다른 글

[ CS ] TCP, UDP 발표 자료  (0) 2024.01.23