◆ 트랜잭션의 개념
관계형 데이터베이스에서 실행되는 여러 개의 SQL명령문을 하나의 논리적인 작업단위로 처리하는 개념.(All or Nothing 방식)
◆ Commit
트랜잭션 내의 모든 SQL명령문에 의해 변경된 작업 내용을 디스크에 영구적으로 저장하고 트랜잭션을 종료.
◆ Rollback
트랜잭션 내의 모든 SQL명령문에 의해 변경된 작업 내용을 전부 취소하고 트랜잭션을 종료.
작업단위를 트랜잭션이라 한다고 했는데, 이 트랜잭션의 크기는 정해져 있는 것이 아니라 각 작업마다 다르다.
예를 들어 대학교 1학년부터 4학년까지 잘 다니다가 4학년 마지막 즈음에 자퇴를 했다면 이 사람의 최종학력은 무엇일까? 답은 고졸이다. 대학교 1학년부터 3학년까지는 제대로 이수했지만 4학년에서 이수를 하지 못했으므로 고졸이 되는 것이다. 즉, 트랜잭션도 마찬가지로 트랜잭션 내의 모든 작업이 성공해야만 커밋이 되는 것이고, 하나라도 실패하면 롤백이 된다.
또다른 예를 보자.
● 계좌이체 트랜잭션
A가 B에게 돈을 붙여주는 상황이라고 가정할때,
① 잔고확인
② A에서 출금
③ B의 계좌확인
④ B에게 송금
⑤ 종료
위 트랜잭션 중에서 5번 종료 상황까지 왔을 때 이전 작업까지 성공적이었다면 커밋하여 정상적으로 종료될 것이고, 이전 작업 중 오류가 있었다면 이전 작업들을 모두 롤백시키고 종료될 것이다.A가 B에게 돈을 붙여주는 상황이라고 가정할때,
① 잔고확인
② A에서 출금
③ B의 계좌확인
④ B에게 송금
⑤ 종료
항상 트랜잭션의 시작은 DML, 종료는 DDL, DCL, TCL이라고 생각하면 된다.
DB서버의 성능을 이야기할 때 초당 트랜잭션이 몇 건 일어나는가? 라고 물어보곤 한다.
여기서 초당 70건이라고 하는 것은 초당 DML작업(커밋 또는 롤백이 끝난 작업을 1건이라 칭함)이 70건 일어난다는 뜻이다.
◆ Auto Commit(자동 커밋)
오라클에서 자동 커밋이라는 것은 사용자가 명시적으로 커밋을 날리지 않았음에도 불구하고 오라클이 자동으로 커밋을 수행하는 행위.
- DDL 수행
- 계정 변환
'오라클 > SQL' 카테고리의 다른 글
[SQL] Data Dictionary (0) | 2010.08.19 |
---|---|
[SQL] DDL(Data Definition Language) (0) | 2010.08.19 |
[SQL] DML(Data Manipulation Language) (0) | 2010.08.19 |
[SQL] SQL의 종류 (0) | 2010.08.19 |
[SQL] Sub Query (0) | 2010.08.18 |