데이터베이스 기초

트랜잭션 T1~T5가 있고, 장애가 발생하기 전에 체크포인트를 한 번 잡았다. T1은 체크포인트 전에 시작하여 커밋했다. T2와 T3는 체크포인트 전에 시작했으며, T2는 체크포인트 후 장애 전에 커밋했고, T3는 장애 시점에 커밋하지 않았다. T4와 T5는 체크포인트 후에 시작했으며, T4는 장애 전에 커밋했고, T5는 커밋하지 않았다. 장애 후의 복구에서 로그를 사용하여 롤포워드해야 하는 트랜잭션은?

  1. AT3와 T5
  2. BT1, T2, T4
  3. CT2와 T4
정답과 해설 보기

정답: C. T2와 T4

체크포인트에서는 그 시점까지 메모리상에서 갱신된 데이터베이스의 페이지를 저장 장치에 쓰고, 그 사실을 로그에 기록합니다. 그래서 체크포인트보다 전에 커밋한 T1의 갱신은 이미 데이터베이스 본체에 반영되어 있어 복구 처리가 필요 없습니다. 체크포인트 후 장애 전에 커밋한 T2와 T4는 커밋은 완료되었는데 갱신의 일부가 본체에 쓰이지 않았을 가능성이 있으므로, 로그의 갱신 후 값을 사용하여 다시 수행합니다(롤포워드). 장애 시점에 커밋하지 않았던 T3와 T5는 본체에 쓰인 도중의 갱신이 있으면 로그의 갱신 전 값을 사용하여 취소합니다(롤백). T3처럼 체크포인트 전에 시작한 트랜잭션도 커밋하지 않았다면 취소 대상입니다. 체크포인트를 잡아 두면 로그를 처음부터 모두 따라갈 필요가 없어져 복구 시간이 짧아집니다.

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

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

  1. 100만 행이 있는 회원 표의 회원번호 열에 B+ 트리 인덱스를 만들었다. 일반적으로 기대할 수 있는 효과와 그 대가의 조합으로 올바른 것은?
  2. 100만 행의 회원 표에서 회원번호(모두 다름), 도도부현(47종류), 성별(2종류로 거의 반반) 열에 각각 B+ 트리 인덱스를 만드는 것을 생각한다. WHERE 절로 한 열의 값을 지정하여 검색할 때 인덱스의 효과가 가장 작다고 생각되는 열은?
  3. NoSQL이라고 불리는 데이터베이스 중 키-값형의 특징으로 일반적으로 올바른 것은?
  4. 여러 서버에 데이터의 복제본을 두는 분산 데이터베이스에 대한 CAP 정리의 설명으로 적절한 것은?
  5. 관계형 데이터베이스의 용어에서 표(릴레이션)의 한 행에 해당하는 것은?