SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
데이터베이스베이직트랜잭션 
NHN NEXT 정호영 
나눔고딕및나눔고딕코딩글꼴을설치해주세요.
대표적DB응용 
OnLineTransactionProcessing(OLTP) 
OnLineAnalyticalProcessing(OLAP)
Transaction 
원래뜻은'거래':쌍방이무언가를교환해야성립 
데이터베이스에서는 
쪼갤수없는작업의단위를트랜잭션이라고함
Transaction의특징 
ACID특성:강의전체에서가장중요한키워드 
Atomicity(원자성) 
Consistency(일관성) 
Isolation(고립성) 
Durability(지속성)
Atomicity:원자성 
All or Nothing 
'트랜잭션은완전히수행되거나전혀수행되지않은상태를유지해야한다'
원자성의예제 
영남이는우진이에게고흐의그림을1억에샀다. 이거래는다음과같이표현 
트랜잭션은어디부터어디까지? 
1)영남.돈-=1억 
2)우진.돈+=1억 
3)우진.아이템-=그림 
4)영남.아이템+=그림
원자성의예제 
영남이는우진이에게고흐의그림을1억에샀다. 이거래는다음과같이표현 
트랜잭션은어디부터어디까지?전부다묶어서! 
1) 영남.돈-= 1억 
2) 우진.돈+= 1억 
3) 우진.아이템-= 그림 
4) 영남.아이템+= 그림
Consistency:일관성 
트랜잭션을수행하고나면하나의일관된상태(correctstatus) 에서다른일관된상태로바뀌어야한다.
Consistency:일관성 
Correct State: 도메인의유효범위, 무결성제약조건등의제약조건을위배하지않는정상적인상태 
Correct State 
Correct State 
Transaction
Consistency예제 
영남이의골드잔액은100골드.이때영남이가상점에서'몰왕검'을3200골드에구매하려고함 
영남이는상점에3200골드를내고'몰왕검'을사기위해계속구입버튼을누름(100–3200=-3100골드) 
시스템상에서골드>0제약조건을가지고있으므로절대'몰왕검'을살수없음
Consistency예제2 
세현이는100골드를보유중이다. 
1)2500골드의강철의솔라리를구매와 
2)3200골드의몰왕검판매를 
묶어서진행하려한다. 
이경우 
1)로인해일시적으로비정상상태가되어도 
최종상태는정상상태이므로트랜잭션은수행될수있다
Isolation(고립성) 
'한트랜잭션이실행되는동안외부에서는트랜잭션에접근할수없다'
Isolation(고립성) 
한번에하나의트랜잭션만수행한다면고립성은항상보장 
그러나실제DB에서는동시에여러트랜잭션이수행 
다수의트랜잭션이동시에수행되더라도한번에하나씩수행된것과동일한결과를가져야하는특성
Durability(지속성) 
완료(commit)된트랜잭션은영구적으로보존이되어야된다는특성 
*커밋:트랜잭션의완료를나타내는용어
Durability(지속성) 
예)트랜잭션이commit된직후PC의리셋버튼을눌렀다. 
1)어떻게되어야하나? 
2)1)의답을위해시스템과OS레벨에서해야하는일은?
트랜잭션사용하기 
STARTTRANSACTION 
[SQL명령어]+ 
COMMIT|ROLLBACK 
COMMIT:트랜잭션을완료함 
ROLLBACK:트랜잭션을취소함
롤백예제
COMMIT예제
트랜잭션프로그래밍 
JDBC에서 
Connection은자동커밋이기본설정 
따라서SQL문장은하나하나커밋이됨 
기본설정을바꿔야트랜잭션을사용할수있음
JDBC트랜잭션예제 
//자동커밋해제 
conn.setAutoCommit(false); 
//커밋하기 
conn.commit(); 
//롤백하기 
conn.rollback();
예제
주의사항 
실제코드에서는예외처리코드를꼭작성해야함 
트랜잭션의중간에에러가발생했을경우반드시rollback을해야함 
트랜잭션을작성할때는얘기치못한에러가발생했을때회사에손해가적게가는방향으로작성해야함!!
실습 
account(id,이름,잔액)테이블생성 
이체프로그램작성 
잔액이0원이하가되면롤백 
정상적으로이체가가능할경우commit
추가로공부할것들 
•TRANSACTION ISOLATION LEVEL에대해각자공부합시다.
THANK YOU!!!

Contenu connexe

Plus de Hoyoung Jung

stored procedure2 + jdbc
stored procedure2 + jdbcstored procedure2 + jdbc
stored procedure2 + jdbcHoyoung Jung
 
mysql stored procedure
mysql stored proceduremysql stored procedure
mysql stored procedureHoyoung Jung
 
mysql 서브쿼리
mysql 서브쿼리mysql 서브쿼리
mysql 서브쿼리Hoyoung Jung
 
GROUP BY, CASE WHEN
GROUP BY, CASE WHENGROUP BY, CASE WHEN
GROUP BY, CASE WHENHoyoung Jung
 
tomcat jdbc mysql 프로그래밍
tomcat jdbc mysql 프로그래밍tomcat jdbc mysql 프로그래밍
tomcat jdbc mysql 프로그래밍Hoyoung Jung
 
데이터베이스 모델링
데이터베이스 모델링데이터베이스 모델링
데이터베이스 모델링Hoyoung Jung
 
MySQL delete.update
MySQL delete.updateMySQL delete.update
MySQL delete.updateHoyoung Jung
 
4. 함수포인터
4. 함수포인터4. 함수포인터
4. 함수포인터Hoyoung Jung
 
2. MySQL DataTye Basic
2. MySQL DataTye Basic2. MySQL DataTye Basic
2. MySQL DataTye BasicHoyoung Jung
 
MySQL Create Table
MySQL Create TableMySQL Create Table
MySQL Create TableHoyoung Jung
 
데이터베이스 베이직 소개
데이터베이스 베이직 소개데이터베이스 베이직 소개
데이터베이스 베이직 소개Hoyoung Jung
 
Crontab 간단 사용법
Crontab 간단 사용법Crontab 간단 사용법
Crontab 간단 사용법Hoyoung Jung
 
포인터의기초 (2) - 포인터 사용하기1
포인터의기초 (2) - 포인터 사용하기1포인터의기초 (2) - 포인터 사용하기1
포인터의기초 (2) - 포인터 사용하기1Hoyoung Jung
 
포인터의 기초(1)
포인터의 기초(1)포인터의 기초(1)
포인터의 기초(1)Hoyoung Jung
 
우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기Hoyoung Jung
 

Plus de Hoyoung Jung (20)

Github Markdown
Github MarkdownGithub Markdown
Github Markdown
 
stored procedure2 + jdbc
stored procedure2 + jdbcstored procedure2 + jdbc
stored procedure2 + jdbc
 
mysql stored procedure
mysql stored proceduremysql stored procedure
mysql stored procedure
 
mysql 서브쿼리
mysql 서브쿼리mysql 서브쿼리
mysql 서브쿼리
 
GROUP BY, CASE WHEN
GROUP BY, CASE WHENGROUP BY, CASE WHEN
GROUP BY, CASE WHEN
 
tomcat jdbc mysql 프로그래밍
tomcat jdbc mysql 프로그래밍tomcat jdbc mysql 프로그래밍
tomcat jdbc mysql 프로그래밍
 
MySQL JOIN
MySQL JOINMySQL JOIN
MySQL JOIN
 
데이터베이스 모델링
데이터베이스 모델링데이터베이스 모델링
데이터베이스 모델링
 
MySQL delete.update
MySQL delete.updateMySQL delete.update
MySQL delete.update
 
MySQL Select (1)
MySQL Select (1)MySQL Select (1)
MySQL Select (1)
 
4. 함수포인터
4. 함수포인터4. 함수포인터
4. 함수포인터
 
2. MySQL DataTye Basic
2. MySQL DataTye Basic2. MySQL DataTye Basic
2. MySQL DataTye Basic
 
MySQL Create Table
MySQL Create TableMySQL Create Table
MySQL Create Table
 
Mymysql basic sql
Mymysql basic sqlMymysql basic sql
Mymysql basic sql
 
데이터베이스 베이직 소개
데이터베이스 베이직 소개데이터베이스 베이직 소개
데이터베이스 베이직 소개
 
Crontab 간단 사용법
Crontab 간단 사용법Crontab 간단 사용법
Crontab 간단 사용법
 
3.포인터
3.포인터3.포인터
3.포인터
 
포인터의기초 (2) - 포인터 사용하기1
포인터의기초 (2) - 포인터 사용하기1포인터의기초 (2) - 포인터 사용하기1
포인터의기초 (2) - 포인터 사용하기1
 
포인터의 기초(1)
포인터의 기초(1)포인터의 기초(1)
포인터의 기초(1)
 
우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기
 

Dernier

실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석JMP Korea
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP Korea
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화JMP Korea
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?Jay Park
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP Korea
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP Korea
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법JMP Korea
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP Korea
 

Dernier (8)

실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 

트랜잭션