본문 바로가기
Computer Science/DataBase

[데이터베이스] 9장 트랜잭션

by na1-4an 2023. 12. 12.

9-1 트랜잭션 개요

1. 트랜잭션

위의 상황에서 수정하고 있는데 중간에 컴퓨터 다운되면 어캄..?

-> log를 유지하자!

두 가지 이상의 명령문이 실행될 때 중간에 다운 될 것을 고려하여 하나의 트랜잭션으로 취급해야함.

두 개 이상의 sql문들을 하나의 트랜잭션으로 취급하려면 사용자가 명시적으로 표시해야함.

이로써 모든 명령어가 실행되거나 모두 실행이 안되거나임.

 

2. 트랜잭션의 특성(ACID)

  • Atomicity 원자성 - 모두 수행되거나 말거나
  • Consistency 일관성 - 트랜잭션 수행전과 다른 새로운 일관된 상태를 가짐. 일시적인 불일치 가능
  • Isolation 고립성 - 한 트랜잭션이 데이터를 갱신하는 동안 이 트랜잭션이 완료되기 전에는 갱신 중인 데이터를 다른 트랜잭션들이 접근 못하도록.
  • Durability 지속성 - 일단 한 트랜잭션이 완료되면 그 후 시스템이 고장나도 손실 안됨.

  • 트랜잭션 완료(commit): 트랜잭션에서 변경하려는 내용이 데이터베이스에 완전하게 반영
  • 트랜잭션 철회(abort, ROLLBACK): 일부만 반영되었으면 원자성을 보장하기 위해 트랜잭션이 수행되기 전의 상태로 되돌림.

 

3. 트랜잭션이 성공하지 못하는 원인

  • 시스템 고장
  • 트랜잭션 고장
  • 매체 고장
  • 통신 고장
  • 자연적 재해
  • 부주의 또는 고의적 고장

 

9-2 동시성 제어

1. 동시성

  • DBMS 성능을 높이기 위해 여러 사용자의 질의나 프로그램들을 동시에 수행해야함.
  • 직렬 스케줄: 여러 트랜직션의 집합을 한번에 한 트랜잭션씩 수행
  • 비직렬 스케줄: 여러개 동시에
  • 직렬 가능: 비직렬과 직렬의 결과가 동일함

 

2. 데이터베이스 연산

  • Input(X): 데이터 베이스 항목 X를 포함하는 블록을 주기억 장치의 버퍼로 읽음. 시간 오래 걷림
  • Output(X): 디스크에 기록
  • read_item(X): 주기억 장치 버퍼에서 데이터항목 X를 변수 X로 복사
  • write_item(X): 프로그램 변수 X를 주기억 장치 내에 기록

 

3. 동시성 제어 안하면 생기는 문제

  • 갱신 손실: 수행 중인 트랜잭션이 갱신한 내용을 다른 트랜잭션이 덮어써 갱신 무효
  • 오손 데이터 읽기: 완료되지 않은 트랜잭션이 갱신한 데이터 읽음
  • 반복할 수 없는 읽기: 한 트랜잭션이 동일한 데이터를 두 번 읽을 때 값이 서로 다른 값을 읽는 것.

 

4. locking 로킹

: 데이터 항목을 로킹한다는 것은 동시성을 제어하기 위해 사용하는 기법임.

  • lock은 데이터베이스 내의 각 데이터 항목과 연관된 하나의 변수
  • 로크에 관한 정보는 로크테이블에서 유지
  • 갱신을 목적으로 데이터 항목을 접근할 때 트랜잭션은 독점 로크를 요청
  • 읽을 목적으로 데이터 항목을 접근할 때는 공유 로크를 요청
  • 트랜잭션이 항목에 대한 접근을 끝내면 로크 해제.

 

5. 2단계 로킹 프로토콜

  • 1단계: 로크 확장 단계 - 새로운 로크 요청 가능. 그러나 보유한 로크 해제는 불가.
  • 2단계: 로크 수축 단계 - 새로운 로크 요청 불가능. 로크를 조금씩 해제 가능. 한꺼번에도 가능.
  • 로크 포인트는 한 트랜잭션에서 필요로하는 모든 로크를 걸어놓은 시점.

 

6. 데드록

  • 2단계 로킹 프로토콜에서는 데드록이 발생할 수 있음.
  • 데드록: 두 개 이상의 트랜잭션들이 상대가 보유하고 있는 로크를 요청하면서 기다리는 상황.
  • 해결: 데드록 방지하는 기법 사용, 데드록을 탐지하고 희생자를 선정해 데드록을 푸는 기법 사용.

 

7. 다중 로크 단위

  • 트랜잭션들이 많은 투플을 접근할 때는 투플 단위로만 로크를 하면
  • 로크 테이블에서 로크 충돌을 검사항고, 로크 정보를 기록하는 시간이 오래걸림.
  • 한 트랜잭션에서 로크할 수 있는 데이터 항목이 두가지 이상 있으면 다중 로크 단위라고함.
  • 단위로는 데이터베이스, 릴레이션, 디스크 블록, 투플 등이 있음.
  • 로크 단위가 작을수록 오버헤드 증가
  • 로크 단위가 작을수록 동시성 정도는 증

 

8. 팬텀 문제

  시간에 따라 T1이 조회한 두 결과가 다름. 이 현상을 팬텀 문제라고 함.

9-3 회복

1. 동시성의 개요

  • DB

 

9-4 PL/SQL의 트랜잭션

1. 동시성의 개요

  • DB