Jun's note

[DB] 트랜잭션(Transaction)이란? 본문

Programming/DB

[DB] 트랜잭션(Transaction)이란?

junning 2022. 3. 22. 15:41
728x90

1. 트랜잭션의 개념

"쪼개질 수 없는 업무처리의 단위"를 의미하며, db에서는 "데이터베이스가 수행하는 작업의 단위"를 의미한다.

 

2. 트랜잭션 예시

ex1)

ATM으로 계좌이체를 할 경우,

1. A 은행에서 돈을 출금하여 B 은행에 송금하려고 한다.

2. 송금 중 오류가 생겨, B 은행에 돈이 송금되지 않았는데 A은행에서는 돈이 빠져나갔다.

 

이와 같은 상황을 막기 위해서는 1,2번 과정이 하나의 작업으로 이뤄져있어야한다.

1번 과정에서 에러가 발생하는 경우 지금까지 했던 과정을 다 취소하고 처음 상태로 복구해야한다. (이 과정은 Rollback이다)

 

ex2)

게시판에 글을 업로드하고 내가 쓴 글을 게시판에서 확인한다.  (db측면에서)

이는 질의어(select, insert, delete 등)를 통해 이뤄진다.

1. 글을 업로드 할때는 insert가 사용되고

2. 내가 쓴 글을 게시판에서 확인하는 할때는 select가 사용된다.

 

여기서 작업의 단위는 insert문과 select문을 합친것이다.

 

 

트랜잭션을 통해 안정성을 확보할 수 있다.

 

3. 커밋(Commit)과 롤백(Rollback)

트랜잭션을 처리하기 위해서는 데이터베이스에서 '커밋' , '롤백' 두가지 명령어가 사용된다.

  • 커밋
    • 하나의 트랜잭션이 성공적으로 끝났을때, 트랜잭션이 끝났다는 것을 알려준다.
    • 커밋 명령어를 사용하면 이 때 수행된 트랜잭션이 로그에 남아, 나중에 Rollback하는 것을 도와준다.
  • 롤백
    • 트랜잭션이 에러나 장애에 의해 비정상적으로 종료되는 경우, 수행하는 작업이다.
    • 롤백을 하게 되면, 트랜잭션을 처음부터 다시 시작하거나, 부분적으로 수행된 작업을 취소한다.

두 명령어는 트랜잭션 단위로 수행된다.

 

4. 정리

db를 설계할 때 항상 트랜잭션 단위로 설계하는 것을 잊지 말자!!

관계형 데이터베이스(RDBMS)의 장점 중 하나가 바로 트랜잭션이다!

'Programming > DB' 카테고리의 다른 글

[DB] 관계형 데이터베이스란?  (0) 2022.01.13
Comments