데이터베이스 기초

트랜잭션이 가져야 할 ACID 특성 중 '계좌 A에서 출금하여 계좌 B에 입금하는 이체 처리가, 도중에 장애가 일어나도 둘 다 수행되거나 전혀 수행되지 않거나 둘 중 하나가 된다'는 성질은?

  1. A일관성(Consistency)
  2. B지속성(Durability)
  3. C원자성(Atomicity)
정답과 해설 보기

정답: C. 원자성(Atomicity)

ACID 특성은 트랜잭션이 만족해야 할 4가지 성질의 머리글자를 딴 것입니다. 원자성(Atomicity)은 트랜잭션 안의 처리가 모두 실행되거나 전혀 실행되지 않거나 둘 중 하나가 되는 성질로, 장애가 일어났을 때는 도중까지의 갱신을 취소합니다. 일관성(Consistency)은 트랜잭션 전후에 데이터가 정합성 제약(잔액이 음수가 되지 않는다, 외래 키의 참조 대상이 있다 등)을 계속 만족하는 성질입니다. 고립성(Isolation, 독립성)은 동시에 실행되는 여러 트랜잭션이 서로 간섭하지 않고, 하나씩 차례로 실행한 경우와 같은 결과가 되는 성질입니다. 지속성(Durability, 영속성)은 커밋한 트랜잭션의 결과가 그 후에 장애가 일어나도 사라지지 않는 성질입니다. 문제의 '전부 아니면 전무' 성질은 원자성입니다.

이 분야 연습하기 분야로 돌아가기

데이터베이스 기초의 다른 문제

  1. 재고 표에서 어떤 상품의 재고 수는 10이다. 트랜잭션 T1은 재고 수를 읽어 3을 뺀 값을 쓰고, T2는 재고 수를 읽어 5를 뺀 값을 쓴다. 락을 걸지 않고 T1의 읽기, T2의 읽기, T1의 쓰기, T2의 쓰기 순서로 실행되었을 때 최종 재고 수는 얼마가 되는가?
  2. 트랜잭션을 동시에 실행했을 때 일어나는 문제 중 더티 리드에 대한 설명으로 올바른 것은?
  3. 트랜잭션 T1이 SELECT COUNT(*) FROM 주문 WHERE 금액 >= 1000을 실행했더니 8건이었다. 그 직후 T2가 금액 2000인 주문 행을 INSERT하고 커밋했다. T1이 같은 SELECT 문을 다시 실행하자 9건이 되었다. 이 현상은?
  4. SQL 표준 규격이 정하는 격리 수준 중 READ COMMITTED에서 일어날 수 있는 현상의 조합으로 올바른 것은?
  5. 트랜잭션 T1이 어떤 행에 공유 락을 걸고 읽고 있다. 이 행에 대해 T2가 공유 락을, T3가 배타 락을 요구했다. T1이 락을 해제할 때까지의 동안에 대해 올바른 것은?