Top Banner
데이터베이스 베이직 트랜잭션 NHN NEXT 정호영 나눔고딕 및 나눔고딕코딩 글꼴을 설치해 주세요.
25

트랜잭션

Jul 13, 2015

Download

Engineering

Hoyoung Jung
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 트랜잭션

데이터베이스베이직

트랜잭션

NHN NEXT 정호영

나눔고딕 및 나눔고딕코딩 글꼴을 설치해 주세요.

Page 2: 트랜잭션

대표적 DB 응용

OnLine Transaction Processing(OLTP)

OnLine Analytical Processing(OLAP)

Page 3: 트랜잭션

Transaction

원래 뜻은 '거래' :쌍방이 무언가를교환해야성립

데이터베이스에서는

쪼갤수없는작업의단위를트랜잭션이라고함

Page 4: 트랜잭션

Transaction의특징

ACID 특성 : 강의전체에서가장중요한키워드

Atomicity (원자성)

Consistency (일관성)

Isolation (고립성)

Durability( 지속성)

Page 5: 트랜잭션

Atomicity: 원자성

All or Nothing

'트랜잭션은 완전히 수행되거나 전혀 수행되지 않은 상태를 유

지해야한다'

Page 6: 트랜잭션

원자성의예제

영남이는우진이에게고흐의그림을 1억에샀다.이 거래는다음과 같이표현

트랜잭션은어디부터어디까지?

1) 영남.돈 -= 1억2) 우진.돈 += 1억3) 우진.아이템 -= 그림4) 영남.아이템 += 그림

Page 7: 트랜잭션

원자성의예제

영남이는우진이에게고흐의그림을 1억에샀다.이 거래는다음과 같이표현

트랜잭션은어디부터어디까지? 전부다묶어서!

1) 영남.돈 -= 1억2) 우진.돈 += 1억3) 우진.아이템 -= 그림4) 영남.아이템 += 그림

Page 8: 트랜잭션

Consistency : 일관성

트랜잭션을 수행하고 나면 하나의 일관된 상태(correct status)

에서 다른일관된 상태로바뀌어야한다.

Page 9: 트랜잭션

Consistency : 일관성

Correct State:도메인의 유효범위, 무결성 제약조건등의 제약조건을 위배하지 않는 정상적인 상태

Correct State Correct StateTransaction

Page 10: 트랜잭션

Consistency예제

영남이의 골드 잔액은 100골드. 이 때 영남이가 상점에서 '몰왕검'을 3200골드에구매하려고함

영남이는 상점에 3200골드를 내고 '몰왕검'을 사기위해 계속구입버튼을누름 ( 100 – 3200 = - 3100 골드)

시스템상에서 골드 > 0 제약조건을 가지고 있으므로 절대 '몰왕검'을 살수 없음

Page 11: 트랜잭션

Consistency예제2

세현이는 100골드를보유중이다.

1) 2500골드의강철의솔라리를 구매와

2) 3200골드의몰왕검판매를

묶어서진행하려 한다.

이 경우

1)로 인해일시적으로비정상상태가되어도

최종상태는정상상태이므로트랜잭션은수행될 수있다

Page 12: 트랜잭션

Isolation (고립성)

'한 트랜잭션이 실행되는 동안 외부에서는 트랜잭션에 접근할수 없다'

Page 13: 트랜잭션

Isolation (고립성)

한번에하나의 트랜잭션만수행한다면고립성은항상보장

그러나실제 DB에서는동시에여러 트랜잭션이수행

다수의 트랜잭션이 동시에 수행되더라도 한 번에 하나씩 수행된 것과 동일한결과를가져야 하는특성

Page 14: 트랜잭션

Durability (지속성)

완료(commit)된 트랜잭션은 영구적으로 보존이 되어야 된다는 특성

* 커밋: 트랜잭션의완료를 나타내는용어

Page 15: 트랜잭션

Durability (지속성)

예) 트랜잭션이 commit 된 직후 PC의 리셋 버튼을눌렀다.

1) 어떻게되어야 하나?

2) 1)의 답을위해 시스템과 OS레벨에서해야하는 일은?

Page 16: 트랜잭션

트랜잭션사용하기

START TRANSACTION

[SQL 명령어] +

COMMIT | ROLLBACK

COMMIT : 트랜잭션을완료함

ROLLBACK : 트랜잭션을취소함

Page 17: 트랜잭션

롤백예제

Page 18: 트랜잭션

COMMIT예제

Page 19: 트랜잭션

트랜잭션프로그래밍

JDBC에서

Connection은자동커밋이 기본설정

따라서 SQL 문장은 하나하나커밋이됨

기본 설정을바꿔야트랜잭션을사용할 수 있음

Page 20: 트랜잭션

JDBC 트랜잭션예제

//자동 커밋 해제

conn.setAutoCommit(false);

//커밋하기

conn.commit();

//롤백하기

conn.rollback();

Page 21: 트랜잭션

예제

Page 22: 트랜잭션

주의사항

실제 코드에서는예외처리 코드를꼭 작성해야함

트랜잭션의 중간에 에러가 발생했을 경우 반드시 rollback을해야 함

트랜잭션을 작성할 때는 얘기치 못한 에러가 발생했을 때 회사에 손해가적게 가는 방향으로작성해야함!!

Page 23: 트랜잭션

실습

account( id, 이름, 잔액) 테이블 생성

이체 프로그램작성

잔액이 0원 이하가되면 롤백

정상적으로이체가가능할 경우 commit

Page 24: 트랜잭션

추가로 공부할 것들

• TRANSACTION ISOLATION LEVEL에 대해 각자 공부합시다.

Page 25: 트랜잭션

THANK YOU!!!