트랜잭션과 무결성

2023. 10. 1. 12:12· CS 기본/DB
목차
  1. 트랜잭션(transaction)
  2. 트랜잭션 특징(ACID)
  3. 원자성
  4. 일관성
  5. 격리성
  6. 지속성
  7. 트랜잭션 보장을 위한 DBMS의 기능
  8. 트랜잭션의 연산
  9. 트랜잭션 상태
  10. Failure(장애)
  11. 회복(Recovery)
  12. 병행 제어(concurrency)
  13. 충돌 원인
  14. 트랜잭션 스케줄
  15. 결과 동등
  16. 충돌 동등
  17. 충돌 직렬 가능 스케줄
  18. 충돌 직렬 가능성 검사
  19. 직렬 가능성 이론을 이용한 다른 방법
  20. 로킹(locking)
  21. 로킹 단위
  22. 2단계 로킹 규약(2PLP, 2 Phase Locking Protocol)
  23. 무결성

본 포스팅은 '면접을 위한 CS 전공지식 노트'를 기반으로 작성되었습니다.

 

트랜잭션(transaction)

  • 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위
  • 여러 개의 쿼리들을 하나로 묶는 단위

트랜잭션 특징(ACID)

  • 원자성(Atomicity)
  • 일관성(Consistency)
  • 격리성(Isolation)
  • 지속성(Durability)

원자성

  • All or nothing
  • 트랜잭션에 속한 연산이 모두 수행되거나 하나도 실행되지 않아야함.

일관성

  • 트랜잭션이 성공적으로 수행된 후에도 데이터베이스가 일관된 상태를 유지해야 함.

격리성

  • 트랜잭션 수행 시 서로 끼어들지 못하게 하는 것

지속성

  • 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함.
  • 이는 DB에 시스템 장애가 발생해도 원래 상태로 복구하는 회복 기능이 있어야 함을 뜻함.
  • 이를 위해 체크섬, 저널링, 롤백 등의 기능을 제공.

트랜잭션 보장을 위한 DBMS의 기능

  • 원자성 -> 회복기능
  • 지속성 -> 병행 제어 기능
  • 격리성 -> 병행 제어 기능
  • 지속성 -> 회복 기능

트랜잭션의 연산

  • commit
    • 트랜잭션이 성공적으로 완료되어 디스크에 기록되었음.
    • 일관된 상태를 유지하게 함.
  • rollback
    • 트랜잭션이 실패함.
    • 그전의 상태로 돌아감.

트랜잭션 상태

  • 철회 상태: 상황에 따라 다시 수행(redo) 되거나 철회됨(undo).

Failure(장애)

  • 트랜잭션 장애
  • 시스템 장애
  • 미디어 장애

회복(Recovery)

  • 장애가 발생했을 때 DB를 장애가 발생하기 전의 일관된 상태로 복구 하는 것.
  • 회복 관리자
    • 데이터베이스 복구 기능 제공
    • DBMS코드의 10% 차지
  • 원리: 중복(data를 중복해서 가지고 있어야한다.)
    • 덤프 : 다른 저장 장치에 주기적으로 복사
    • 로그 : 별도 파일에 기록
  • DB 회복 기법
    • 로그 회복 기법
      • 즉시 갱신 회복 기법
      • 지연 갱신 회복 기법
    • 검사 시점 회복 기법
    • 미디어 회복 기법

병행 제어(concurrency)

  • 여러 사용자가 DB를 동시 공유할 수 있게 트랜잭션을 여러개 동시에 수행함.
  • 여러 트랜잭션을 번갈아  수행(interleaving)
  • 병행 수행시 발생하는 문제점
    • 갱신 분실
    • 모순성
    • 연쇄 복귀

충돌 원인

  1. 다른 트랜잭션이 동일한 변수 처리
  2. 최소한 하나의 write 연산

트랜잭션 스케줄

  • 직렬 스케줄 : 트랜잭션 순차 실행
  • 비직렬 스케줄 : 트랜잭션 인터리빙 방식 실행
  • 직렬 가능 스케줄 : 비직렬 스케줄이지만 직렬스케줄과 같이 정확학 결과 생성

 

결과 동등

  • 동일한 초기 상태를 가진 다른 스케줄이 같은 최종결과를 뱉는것
  • 그러나 우연히 되었을 가능성이 있다.

충돌 동등

  • 두 스케줄에서 충돌 연산의 순서가 동일 한 것을 충돌 동등이라고 한다.

충돌 직렬 가능 스케줄

  • 어떤 스케줄 S와 충돌 동등한 스케줄

충돌 직렬 가능성 검사

  • 그래프에서 사이클이 없는 경우 가능
  • 트랜잭션을 임의로 수행시키고 복귀 하며 연쇄 복귀가 자주 일어날 수 있다.
  • 어떤 스케줄이 언제 시작해 언제 끝나는지 결정에 어려움이 있어 문제가 복잡해진다.

직렬 가능성 이론을 이용한 다른 방법

  • 로킹(locking), 2단계 로킹 규약
  • 타임 스탬프

로킹(locking)

  • 기본 로킹 프로토콜
  • 데이터 접근을 위해선 lock 연산 실행
  • 끝나면 unlock 연산 수행

로킹 단위

  • lock 연산 실행하는 대상 데이터의 크기
  • 전체 DB, 릴레이션, 튜플, 속성 등 가능
  • 로킹 단위가 커질 수록 병행성 낮아지고 제어가 쉽다.
  • 반대로 작아질수록 병행성은 높아지고 제어가 어려워진다.
  • but 기본적인 locking 도 일관성 없는 결과 도출 가능

2단계 로킹 규약(2PLP, 2 Phase Locking Protocol)

  • 기본 로킹 규약의 문제 해결하고 트랜잭션의 직렬 가능성 보장 위해 새로운 규약 추가
  • 확장 단계 : 트랜잭션이 lock 연산만 실행 unlock 연산 실행 X
  • 축소 단계 : 트랜잭션이 unlock 만 가능, lock 불가

무결성

  • 데이터의 정확성, 일관성, 유효성을 유지하는 것
  • 개체 무결성 : 기본키로 선택된 속성에 NULL이 오면 안됨.
  • 참조 무결성 : 참조 속성에 유효한 값이 와야 함.
  • 고유 무결성
  • NULL 무결성

'CS 기본 > DB' 카테고리의 다른 글

조인의 종류  (0) 2023.10.04
인덱스  (1) 2023.10.03
데이터베이스의 종류  (0) 2023.10.01
ERD와 정규화 과정  (0) 2023.09.28
데이터베이스 기초  (0) 2023.09.27
  1. 트랜잭션(transaction)
  2. 트랜잭션 특징(ACID)
  3. 원자성
  4. 일관성
  5. 격리성
  6. 지속성
  7. 트랜잭션 보장을 위한 DBMS의 기능
  8. 트랜잭션의 연산
  9. 트랜잭션 상태
  10. Failure(장애)
  11. 회복(Recovery)
  12. 병행 제어(concurrency)
  13. 충돌 원인
  14. 트랜잭션 스케줄
  15. 결과 동등
  16. 충돌 동등
  17. 충돌 직렬 가능 스케줄
  18. 충돌 직렬 가능성 검사
  19. 직렬 가능성 이론을 이용한 다른 방법
  20. 로킹(locking)
  21. 로킹 단위
  22. 2단계 로킹 규약(2PLP, 2 Phase Locking Protocol)
  23. 무결성
'CS 기본/DB' 카테고리의 다른 글
  • 인덱스
  • 데이터베이스의 종류
  • ERD와 정규화 과정
  • 데이터베이스 기초
LTSGOD
LTSGOD
LTSGOD
TS's log
LTSGOD
전체
오늘
어제
  • 분류 전체보기 (138)
    • 언어 공부 (18)
      • C++ (6)
      • Python (12)
    • AI (39)
      • Numpy (2)
      • Pandas (5)
      • Pytorch (11)
      • Deep Learning (9)
      • CV (11)
      • 과제에서 얻은 것 (1)
    • 수학 (17)
      • 확률론 (8)
      • AI Math (9)
    • Spring (24)
      • 스프링입문 (8)
      • 스프링 원리 - 기본편 (5)
      • 스프링부트와 AWS로 혼자구현하는 웹 서비스 (10)
      • JPA (1)
      • spring MVC (0)
    • CS 기본 (25)
      • 네트워크 (5)
      • OS (4)
      • 자료구조 (9)
      • DB (7)
    • Git (2)
    • 백준 (1)
    • 활동 (8)
      • 2023 겨울 (1)
      • 네이버 부스트캠프 AI Tech (7)
    • HTML,CSS (2)
    • 도커 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • AWS
  • pytorch
  • 붓캠
  • 후기
  • BOOSTCAMP
  • 부스트캠프
  • 회고
  • AI
  • AI Tech 5기
  • 백준
  • Camper
  • 5기

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
LTSGOD
트랜잭션과 무결성
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.