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
'Computer Science > DataBase' 카테고리의 다른 글
[데이터베이스] 8장 뷰와 시스템 카탈로그 (0) | 2023.12.12 |
---|---|
[데이터베이스] 7장 릴레이션 정규화 (0) | 2023.12.12 |
[데이터베이스] 6장 물리적 데이터베이스 설계 (1) | 2023.11.26 |
[데이터베이스] 5장 데이터베이스 설계와 ER모델 (2) (0) | 2023.11.26 |
[데이터베이스] 5장 데이터베이스 설계와 ER모델 (1) (0) | 2023.11.25 |