반응형
🧐 트랜잭션이란?
트랜잭션(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 |
댓글