Pay it Forward

TRANSACTION (트랜잭션) 사용하기 본문

DB/MYSQL

TRANSACTION (트랜잭션) 사용하기

minjoony 2020. 1. 16. 11:35
728x90

MYSQL을 통해 DB를 만지던 중 알게된 Transaction.

 

보통 mysql:workbench 등의 Tool을 이용하여 DB를 바꿀 때, UPDATE문을 곧바로 사용하곤 한다.

 

이 때, 실수로 바꾸고자 하는 레코드가 아닌 다른 레코드를 변경해버린다면?

 

백업해 둔 DB가 있다면 다행이지만 없다면 이는 매우 치명적이다.

 

따라서 UPDATE와 같이 DB의 내용을 수정, 삭제할 때에는 Transaction(트랜잭션)을 이용하는 것이 좋다!

 

Transaction 이란?

DB의 내용 및 상태를 변환시키는 기능을 수행하기 위해, 한 번에 모두 수행되어야 할 일련의 작업 단위이다.

 

Transaction의 성질

  1. Atomicity (원자성) : 트랜잭션의 작업은 시작되었다면 모두 실행되어 반영되거나 혹은 아예 반영되지 않아야 한다.
  2. Consistency (일관성)
  3. Isolation (독립성)
  4. Durability (지속성)

이 중에서, 원자성에 대한 부가설병을 하자면

 

- 만약 트랜잭션 내부에 A, B라는 작업 두 개가 있다면 이 트랜잭션이 반영되려면 A, B가 모두 실행되어야 한다.

  만일 A는 올바르게 실행되었으나 B가 실패하였다면 이 트랜잭션은 실패하여 반영되지 않아야 한다.

 

 

  • 사용법

START TRANSACTION
.
.
[실행할 코드부]
.
.
COMMIT
ROLLBACK

- START TRANSACTION : Transaction의 시작을 알린다.
- COMMIT : 실행할 코드부에 error가 없으면 commit을 하여 DB에 해당 변경사항을 적용한다.
- ROLLBACK : 실행할 코드부에 error가 있어서 DB의 내용이 잘못 변경 혹은 삭제된 경우 롤백을 이용해 변경사항을 폐기한다.

728x90
Comments