트랜잭션
사전적 의미 : 거래
컴퓨터 과학 분야 : 더이상 분할이 불가능한 업무처리의 단위를 의미
ex)
1. A가 B에게 입금을 했다
2. 그러나 A만 출금이 되고 B는 입금이 되지 않았다
계좌이체 라는 행위 : 인출, 입금 두 과정으로 이루어짐
-> 이 두 과정은 동시에 성공하던지 동시에 실패해야 함
-> 하나로 묶음으로써 Atomic함을 의미
-> 이 과정을 동시에 묶는 방법이 트랜잭션
게시판을 예로 들어보자.
1) 게시판 사용자는 게시글을 작성하고, 올리기 버튼을 누른다.
2) 그러면 글 올리기가 처리되고 자동으로 다시 게시판에 돌아오게 된다.
3) 게시판에서 자신의 글이 포함된 업데이트된 게시글들을 볼 수 있다.
이러한 상황을 데이터베이스 작업으로 옮기면, 사용자가 올리기 버튼을 눌렀을 시, Insert 문을 사용하여 사용자가 입력한 게시글의 데이터를 넣는다.
그 후에, 게시판을 구성할 데이터를 다시 Select 하여 최신 정보로 유지한다.
여기서 작업의 단위는 insert문과 select문 둘다 를 합친것이다. 이러한 작업단위를 하나의 트랜잭션이라 한다.
관리자나 개발자가 하나의 트랜잭션 설계를 잘하는 것이 데이터를 다루는 것에 많은 이점이 있다.
| 트랜잭션 제어 명령어 | 기능 |
|---|---|
| COMMIT | 보류중인 모든 데이터 변경사항을 영구적으로 적용. 현재 트랜잭션 종료 |
| ROLLBACK | 보류중인 모든 데이터 변경사항을 폐기. 현재 트랜잭션 종료, 직전 커밋 직후의 단계로 회귀(되돌아가기) 전체 트랜잭션을 롤백함 |
트랜잭션 내의 DML 명령문들은 실행이 되어 SELECT -FROM 결과에 반영되더라도, 커밋(COMMIT) 전까지는 임시적인 상태
-> 이 상태에서는 ROLLBACK을 할 경우에는 트랜잭션이 취소되고 이전 커밋 직후의 상태로 돌아가게 됨
명령어
commit;
rollback;