본문 바로가기
TIL

[TIL] 트랜잭션(Transaction)

by 쾌횽 2024. 1. 29.
반응형

 

🧐 트랜잭션이란?

트랜잭션(Transaction)은 작업의 완전성을 보장해주기 위해 사용되는 개념이다. 여러개의 작업(쿼리)을 묶어 하나의 작업 단위로 그룹화하여 처리하는 방식이다.

 

트랜잭션은 결제 시스템과 같이 A의 계좌에서 돈이 B계좌로 이체할 때 A의 돈은 빠지고, B의 돈은 오르는 식의 일을 처리할때와 같이 어느 한쪽의 데이터만 업데이트되는 것을 방지하기 위해 트랜잭션이라는 개념을 도입했다.

 

🧐 트랜잭션의 특징

트랜잭션의 특징(ACID)은 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위해 특징을 나열해 놓은 개념이다.

  • 원자성(Atomicity)
    원자성은 트랜잭션 내에서 실행되는 명령들을 하나의 묶음으로 처리하여, 내부에서 실행된 명령들이 전부 성공하거나, 모두 실패해야한다는 특징이다.
  • 일관성(Consistency)
    데이터의 일관성을 유지하는 특징이다. 작업이 성공할 경우 아무런 문제가 발생하지 않고, 실패하더라도 실패한 상태로 데이터를 방치하지 않는 특징이다.
    만약 일관성이 지켜지지 않는다면 데이터가 언제 파손될지 모르는 불안감을 가진 체 작업해야한다.
  • 격리성(Isolation)
    DB에 접속한 또 다른 클라이언트가 해당 DB오브젝트를 읽거나, 사용할 수 없도록 방지하여, 데이터 무결성을 보장하게 된다.
  • 지속성(Durability)
    수정된 데이터가 어떠한 상황에서도 보존되는 특징이다. 다시말해, 트랜잭션이 완료되면 결과는 데이터베이스에 영구적으로 저장되며, 이후 시스템에 어떠한 문제가 발생하더라도 데이터는 손상되지 않는다.
// SPARTA테이블 생성
CREATE TABLE IF NOT EXISTS SPARTA
(
    spartaId      INT(11)      NOT NULL PRIMARY KEY AUTO_INCREMENT,
    spartaName    VARCHAR(255) NOT NULL,
    spartaAddress VARCHAR(255) NOT NULL
);

// 1번째 트랜잭션 실행
START TRANSACTION;

// 데이터 추가
INSERT INTO SPARTA (spartaName, spartaAddress)
VALUES ('SPARTA1', 'SEOUL'),
       ('SPARTA2', 'BUSAN'),
       ('SPARTA3', 'DAEGU');

// 트랜잭션을 DB에 적용
COMMIT;

// 2번째 트랜잭션 실행
START TRANSACTION;

// 데이터 추가
INSERT INTO SPARTA (spartaName, spartaAddress)
VALUES ('SPARTA4', 'SEOUL'),
       ('SPARTA5', 'BUSAN'),
       ('SPARTA6', 'DAEGU');

// 트랜잭션 롤백
ROLLBACK;

// 데이터 조회
SELECT * FROM SPARTA;

 

반응형

'TIL' 카테고리의 다른 글

[TIL] 개인과제 초기 설계  (0) 2024.01.31
[TIL] 쿠키와(Cookie) 세션(Session)  (0) 2024.01.30
[TIL] JS 프로그래머스 - K번째 수  (0) 2024.01.26
[TIL] SQL과 종류  (0) 2024.01.25
[TIL] 관계형 데이터 베이스 (RDB)  (0) 2024.01.24

댓글