전공 과목 이수2👨‍💻/데이터베이스관리

Transaction 트랜잭션

천숭이 2021. 12. 6. 21:11

# 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 고립성 : 고립된 데이터는 일관성 있는 상태이다

고립된 데이터에서 일관성있는 데이터가 넘겨지는 모습 (데이터 순서는 상관X)

- 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