본문 바로가기
CS/데이터베이스

데이터베이스 스터디 5주차

by DenverAlmighty 2024. 11. 25.

 

트랜잭션이란?

: 데이터베이스 시스템에서 복구 및 병행 수행 시 처리되는 작업의 논리적 단위

하나의 트랜잭션은 commit 되거나 rollback 된다.

트랜잭션은 일반적으로 회복의 단위가 된다

 

트랜잭션의 특성 (ACID)

  • 원자성 (Atomicity) : 트랜잭션 연산은 데이터베이스에 모두 반영되거나 전혀 반영되지 않아야함. 에러 발생 시 트랜잭션 전부 취소되어야함
  • 일관성(Consistency) : 트랜잭션이 성공적으로 완료되면 언제나 일관성 있는 데이터벤이스 상태를 가져야함
  • 독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션 연산이 까어들 수 없음
  • 영속성(Durability) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야함

 

 

Commit, Rollback 연산

  • Commit : 트랜잭션에 대한 작업이 성공적으로 끝났고, 데이터베이스가 다시 일관된 상태에 있을 때 완료를 트랜잭션 관리자에게 알려줌 
  • Rollback : 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스의 일관성을 깨뜨렸을 때 트랜잭션의 일부가 정상적으로 처리되었더라도 원자성 구현 위해 해당 트랜잭션이 행한 모든 연산 취소시키는 연산.

 

동시성 제어 (Concurrency control)

: 여러 사용자가 동시에 여러 개의 트랜잭션을 병행 수행시킬 떄, 동시에 실행되는 트랜잭션들이 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의 상호작용을 제어하는 것.

 

로킹(Locking)

: 주요 데이터의 액세서를 상호 배타적으로 하는 것

트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 lock을 요청해서 lock이 허락되어야만 그 로킹 단위를 액세스할 수 있도록 하는 기법.

 

데드락(deadlock)

두 개 이상의 트랜잭션들이 서로 상대방이 보유하고 있는 로크 요청하면서 기다리고 있는 상황

데드록 해결 위해 데드록 방지 기법이나 데드록 탐지하고 희생자 선정하여 데드록 푸는 기법 등 사용

 

회복 (Recovery)

: 트랜잭션의 처리를 수행하는 도중 장애가 발생하여 데이터베이스가 손상되었을 때 손상되기 이전의 정상 항태로 복구시키는 작업.  데이터베이스의 일관성을 유지함

 

회복을 위한 조치

Redo : 가장 최근 복제본 + 로그 -> 데이터베이스 복원

Undo : 로그 + 모든 변경 취소 -> 원래의 데이터베이스 상태로 복원

 

 

체크포인트

로그를 사용하더라도 어떤 트랜잭션의 갱신 사항이 주기억장치 버퍼로부터 디스크에 기록되었는가를 구분할 수 없으므로 회복 시 재수행할 트랜잭션의 수를 줄이기 위해 주기적으로 체크포인트 수행

체크포인트 시점에는 주기억장치의 버퍼 내용이 디스크에 강제로 기록되므로, 체크포인트르 수행하면 디스크 상에서 로그와 데이터베이스의 내용이 일치하게됨