데베구_0602

allzeroyou·2022년 6월 2일
0

데이터베이스

목록 보기
24/25

트랜잭션

동시에 일어나는 작업량

2개의 쿼리가 필요

10000원 => 1000원 계좌이체
내 계좌에서 돈이 빠지고, 다른 계좌에는 돈이 들어가야!

DBMS 데이터 무결성이 중요하니까!

CPU동작 => 하드디스크 => RAM => 캐시

장애가 일어날때 데이터를 복구하는 작업의 단위가 됨

트랜잭션의 종료(COMMIT)을 알리는 방법

트랜잭션의 성질

원.일.고.지

  • 원자성
    트랜잭션에 포함된 작업은 전부 수행되거나 아니면 전부 수행되지 않아야(ALL OR NOTHING)

  • 일관성
    무결성 유지
    테이블 생성시 create문과 alter 문의 무결성 제약조건을 통해 명시됨
    트랜잭션 수행 중에, 값이 변경되는 것을 허용 x

  • 고립성(독립성)
    동시에 접근 시 문제 발생.
    한글 파일 => 편집모드 => 메일 전송을 위해 파일 첨부시 문제 발생
    OS) 작업이 완료되지 않은 상태라!

데이터베이스는 공유가 목적이므로 여러 트랜잭션이 동시에 수행됨

고립성을 유지하기 위해서는 트랜잭션이 변경 중인 임시 데이터를 다른 트랜잭션이 읽고 쓸 때 제어 필요

  • 지속성
    트랜잭션이 정상적으로 완료(commit) 혹은 부분완료(partial commit)한 데이터는 DBMS가 책임지고 데이터베이스에 기록하는 성질

트랜잭션 제어 명령어(TCL)

START TRANSACTION: 트랜잭션 시작

START TRANSACTION
SET TRANSACTION [고립수준 OPTION]

COMMIT: 트랜잭션 종료

COMMIT

ROLLBACK: 트랜잭션을 전체 OR Savepoint까지 무효화시킴

ROLLBACK {TO <Savepoint>}

SAVEPOINT: savepoint 만듦

SAVEPOINT <savepoint>

동시성 제어

동시성 제어

트랜잭션이 동시에 수행될 때, 일관성을 해치지 않도록 트랜잭션의 데이터 접근을 제어하는 DBMS 기능

갱신손실 문제

두 개의 트랜잭션이 한 개의 데이터를 동시에 갱신(UPDATE)할때 발생, 데이터베이스에서 절대 발생하면 안되는 현상

갱신손실 문제를 해결하기위한 상대방 트랜잭션이 데이터를 사용하는지 여부를 알 수 있는 규칙이 필요함
데이터를 수정 중이라는 사실을 알리는 방법의 잠금 장치

락의 유형

  • 공유락
    트랜잭션이 읽기를 할 때 사용하는 락
  • 배타락
    읽고 쓸 때 사용하는 락

2단계 락킹(2 PHASE Locking)

  • 확장단계
    누가 접근 => 락 =?>
  • 수축단계

반복불가능 데이터

유령데이터 읽기

트랜잭션 고립 수준 명령어

회복

데이터베이스에 장애가 발생했을 때 데이터베이스를 일관성있는 상태로 되돌리는 dmms 기능

관리자 보안 백업 다룰 예정
2번 남음
교재 진도 다 빼고 nosql 공부해보자
시험범위는 트랜잭션까지

profile
모든 건 zero 부터, 차근차근 헛둘헛둘

0개의 댓글