LabHub

데이터베이스 개념 · 트랜잭션과 ACID · 퀴즈

퀴즈: 트랜잭션과 ACID

LabHub 에서 이어서 보기

문항 7개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 같은 트랜잭션 안에서 같은 행을 두 번 읽었는데 값이 달라졌다. 이 현상의 이름은?

    1. dirty read
    2. phantom read
    3. non-repeatable read
    4. write skew
  2. 두 트랜잭션이 같은 조건으로 집합을 읽고 서로 다른 행을 갱신해 불변식이 깨졌다. 이것을 막을 수 있는 것은?

    1. Serializable, 또는 명시적 잠금이나 제약 조건
    2. Read Committed
    3. Repeatable Read
    4. Read Uncommitted
  3. PostgreSQL 에서 Read Uncommitted 를 요청하면?

    1. dirty read 가 발생할 수 있다
    2. 오류가 발생한다
    3. 문법은 받아들여지지만 실제로는 Read Committed 로 동작한다
    4. 성능이 눈에 띄게 좋아진다
  4. 격리 수준을 Repeatable Read 이상으로 올릴 때 애플리케이션이 반드시 준비해야 하는 것은?

    1. 직렬화 실패 오류를 잡아 트랜잭션 전체를 다시 실행하는 재시도 로직
    2. 잠금 대기가 늘어나니 커넥션 풀 크기를 키우는 설정
    3. 충돌을 줄이도록 대상 표에 인덱스를 추가하는 작업
    4. 읽기 부하를 옮길 읽기 전용 복제본 구성
  5. 작업 큐 테이블에서 여러 워커가 서로 다른 작업을 안전하게 집어 가게 하는 데 적합한 것은?

    1. SELECT ... FOR SHARE
    2. SELECT ... FOR UPDATE SKIP LOCKED
    3. 격리 수준을 Read Uncommitted 로 낮추기
    4. 인덱스 힌트
  6. 지속성(Durability)을 보장하는 대표적인 메커니즘은?

    1. 인덱스 — 조회 속도를 높이는 자료 구조
    2. 선행 기록 로그(WAL) — 데이터 페이지보다 로그를 먼저 디스크에 기록한다
    3. 커넥션 풀 — 연결을 미리 만들어 재사용한다
    4. 정규화 — 중복을 없애 갱신 이상이 생기지 않게 한다
  7. 중복 예약을 막는 방법 중 가장 견고한 것은?

    1. 애플리케이션에서 조회 후 없으면 삽입한다
    2. 격리 수준을 Repeatable Read 로 올린다
    3. 유일 인덱스나 배제 제약으로 데이터베이스가 강제하게 한다
    4. 삽입 전에 잠시 대기한다