[MySQL] 트랜잭션(Transaction) > db

본문 바로가기
사이트 내 전체검색

db

[MySQL] 트랜잭션(Transaction)

페이지 정보

작성자 서방님 댓글 0건 조회 114회 작성일 12-05-21 17:03

본문

Transaction(트랜잭션)
 - 한 단위의 일을 수행하는 일련의 SQL문이다.
 - 쿼리 동작시 이상이 있을시 롤백할 수 있는 기능을 제공한다. 

Transaction의 특징
 - A (원자성) : 트랜잭션을 구성하는 모든 명령이 실행되거나 어떠한 명령도 실행되지 않아야 한다.
                     트랜잭션의 일부만을 수행할 수 없다. (데이터 손실이 일어날 수 있기 때문) 
                     쿼리문이 모두 실행되거나 아니면 아예 안되던 둘 중 하나여야 한다는 뜻이다.
 - C (일관성) : 트랜잭션이 끝난 후 DB는 일관성을 유지해야 한다. 쿼리 전 후의 데이터가 알맞아야 한다.
 - I (독립성) : 모든 트랜잭션은 동시에 일어나는 다른 트랜잭션과 상관없이 DB에 일관된 뷰를 가지고 있다.
                    예) A가 현금 인출기에서 돈을 빼내는 동안 B는 현금 인출기 잔고를 볼 수 없도록 해야하거나
                         "트랜잭션 진행 중"이라는 메세지가 나와야 한다.(결과가 맞아야 하니까) 
 - D (지속성) : 트랜잭션이 끝난 후, DB는 데이터를 정확히 저장하고 정전이나 그 외의 이상 상황으로부터
                     데이터를 보호해야 한다. 보통 트랜잭션의 기록을 주 데이터베이스 외에 다른 위치의
                     데이터베이스에 저장하는 방식을 사용한다.

MySQL에서 트랜잭션을 수행하는 방법
 - 저장 엔진(storage engine)을 사용해야 한다.
 - 저장 엔진은 데이터베이스의 모든 데이터와 구조를 저장하는 하부 구조이다.
 - 저장 엔진의 타입별로 트랜잭션을 허용하기도 하고 그렇지 않기도 한다. 

* 저장 엔진이 트랜잭션을 지원하는 BDB이거나 InnoDB인지 확인해야 한다.

저장 엔진을 변경하는 방법
 Alter Table your_table Type =InnoDB;
 
 
트랜잭션의 예

1) RollBack 

 Start Transaction;
 Select * From piggy_bank;
 Update piggy_bank set coin = 'Q' Where coin 'P'; 
 Select * From piggy_bank;          // 변경된 내용을 볼 수 잇다.
 RollBack;                                  // 롤백하면
 select * From piggy_bank;          // 변경되기 전 상태로 돌아간다.

2) Commit
 Start transaction;
 Select * From piggy_bank;
 Update piggy_bank set coin = 'Q' Where coin 'P';
 Select * From piggy_bank;          // 변경된 내용을 볼 수 있다.
 Commit;                                   // 이제 변경을 되돌릴 수 없다.
 Select * From piggy_bank;         // 변경된 내용이 나온다.

댓글목록

등록된 댓글이 없습니다.

Total 464건 12 페이지
게시물 검색

회원로그인

접속자집계

오늘
130
어제
225
최대
1,347
전체
154,889
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.