# Transaction 거래
- 하나의 논리적 작업 단위를 이루는 연산들의 집합
- 논리적인 작업의 단위
- 데이터베이스 무결성을 지키기 위해 존재
- DB시스템은 비일관성 상태가 되지 않도록 하면서 트랜잭션들의 동시 실행을 지원해야 한다.
- 트랜잭션은 항상 일관성 있는 값을 만들어야 한다.
## 꼭 지켜야 하는 규칙 ACID !!
# 송금의 경우
** All or Nothing (성공적인 경우) **
- 1~6까지 잘 이루어짐
- 두 번의 업데이트 작업 (write)도 잘 이루어짐
** Atomicity 원자성 **
- 4,5,6 이 실행되지 않으면 돈은 증발됨 -> 비일관적인 데이터베이스 상태 (실패 원인 : sw or hw)
- 1,2,3 단계에서 실패하면 데이터베이스에 기록하면 안 됨 -> 아무일도 일어나지 않음
- 트랜잭션이 갱신하는 데이터의 예전 값을 로그(log)라 불리는 파일에 기록된다. 트랜잭션이 정상적으로 종료하지 못할 경우 데이터베이스 시스템은 로그를 사용해 데이터의 예전 값으로 복구함으로써 트랙잭션 전 상태로 환원시킨다.
** Durability 지속성 **
- 거래가 완료되면 무슨일이 생기더라도 트랜잭션에 의한 DB가 유지돼야 한다.
- 일관성 있는 상태 (consistent) 지속되어야 함.
- 성공(All) 상태 or Nothing(작업x) 상태 유지
- 시스템 장애가 발생하여도 지속적으로 남아야 한다 *중요*
** Consistency 일관성 **
- 2,5번은 어플리케이션 코드의 작업
** Isolation 고립성 **
- 데이터베이스 시스템은 특별한 조치를 취해 동시에 수행되는 다른 데이터베이스 명령의 영향을 받지 않고 한 트랜잭션이 올바로 수행되는 것을 보장해야 한다.
- serial 하게 동일한 결과 내놓아야 한다.
- 실제 데이터베이스에서는 write연산에 의한 중간 갱신 결과는 다른 곳에 임시로 저장햇다가 나중에 디스크에 저장한다
# 트랙잭션 상태
- Active 동작 :
초기상태로, 트랜잭션이 실행중이면 동작 상태에 있다고 말할 수 있다
- Partially committed 부분 커밋 :
마지막 명령문이 실행된 후의 상태를 말한다
- Failed 실패 :
정상적인 실행이 더 이상 진행될 수 없을때 가지는 상태
- Aborted 중단 = Terminated 종료:
트랜잭션이 롤백되고 데이터베이스가 트랜잭션 시작 전 상태로 환원되고 난 후의 상태
- Committed 커밋 :
트랜잭션이 성공적으로 완료된 후의 상태, 상태는 오류가 바생하더라도 지속된다.
일단 트랜잭션이 커밋되면 트랜잭션을 중단하고 결과를 되돌릴 수 없다. 유일한방법은 보상트랜잭션
sql 코드 작성 후 commit을 DBMS에 보내면 DBMS의 return code(commit 성공여부)를 반드시 받아야 한다. **중요**
# 동시성 제어 기법 (Concurrency control schemes) -> 고립성
- Concurrent != Prallel
concurrent : 다양한 작업들을 동시간대에 수행
parallel : 하나의 작업을 나누어서 수행
- 운영체제 시스템에서 다중 프로그래밍을 사용하는 것과 같다. -> 스케줄
- 스케줄 : 실행중인 트랜잭션들이 어떤 순서에 따라 실행되는지를 보여준다
# 스케줄 **
- 기술한 실행 순서
- 시스템에 실행중인 트랜잭션들이 어떤 순서에 따라 실행되는지를 보여준다
- 일련의 트랜잭션들의 스케줄이 반드시 그들 트랜잭션들의 모든 명령어들을 포함하고 있어야 한다
- 명령어는 각 개별 트랜잭션의 명령어 순서를 따라야 한다
- 데이터베이스 시스템이 일관된 상태에 있도록 스케줄을 실행하는 것은 데이터베이스 시스템의 몫이다.
- 데이터 베이스 시스템의 동시성 제어 컴퓨넌트가 이 역할을 수행
<정리>
- Transaction : 거래, 작업(일)의 논리적 단위
- ACID 를 철저히 지켜야 한다.
- A 원자성 : ALL or NOTHIHG
- C 일관성 : 데이터베이스가 사실만을 다루게
- 자바 -> DBMS -> DB
- 자바 SQL에서 DBMS로 넘어갈때 형태와 일관성의 내용이 달라질수 있다
- ** DBMS는 트랜잭션이 만들어내는 데이터는 일관성있는 데이터를 만단다고 전제한다 **
- I 고립성 : 고립된 데이터는 일관성 있는 상태이다
- D 지속성 : 일관성 있는 데이터가 지속되어야 한다
- ** ACID는 일관성을 베이스로 한 개념
- 스케줄 : 처리할 트랜잭션의 순서를 정해주는 것
- interleaving schedule ==> Seralizable Schedule
'전공 과목 이수2👨💻 > 데이터베이스관리' 카테고리의 다른 글
교착상태 처리, 예방 (0) | 2021.12.16 |
---|---|
동시성 제어 (0) | 2021.12.08 |
스케줄 (0) | 2021.12.08 |
인덱스 정리 (0) | 2021.11.05 |
인덱스 (0) | 2021.10.13 |
파일 내 레코드 구조, 데이터 사전 저장장치 (0) | 2021.10.05 |