본 포스팅은 '면접을 위한 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)
- 병행 수행시 발생하는 문제점
- 갱신 분실
- 모순성
- 연쇄 복귀
충돌 원인
- 다른 트랜잭션이 동일한 변수 처리
- 최소한 하나의 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 |