트랜잭션이란?
하나의 논리적 작업 단위를 구성하는 일련의 연산들의 집합, 작업단위
트랜잭션의 4가지 특징 ACID
- 원자성(Atomicity)
- 트랜잭션은 DB에 모두 반영되거나, 전혀 반영되지 않아야 합니다.
- Commit & Rollback을 활용합니다. - 일관성(Consistency)
- 트랜잭션의 작업 처리 결과는 항상 일관성 있어야 합니다.
- 허용된방식으로만 데이터를 변경하는것을 의미합니다.
- 데이터베이스에 기록된 모든 조건, 제약들을 적용하며 수행하는것을 의미합니다. - 독립성(Isolation)
- 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을때, 어떤 트랜잭션도 다른 태랜잭션 연산에 끼어들 수 없습니다. - 지속성(Durability
- 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미합니다.
-시스템 문제, DB 일관성 체크 등을 하더라도 유지되어야 함을 의미합니다.
- 전형적으로 모든 트랜잭션은 로그로 남고 시스템 장애 발생 전 상태로 되돌릴 수 있습니다.
- 트랜잭션은 로그에 모든 것이 저장된 후에만 commit 상태로 간주될 수 있습니다.
Commit & Rollback
- Commit
- 하나의 트랜잭션이 성공적으로 끝났고, DB과 일관성있는 상태일 때 이를 알려주기 위해 사용하는 연산 - Rollback
- 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션 원자성이 깨진경우 transaction이 정상적으로 종료되지 않았을 때
원상태로 되돌리기위해 하는 연산
단일 명령에서의 트랜잭션 처리
mysql 에서는 기본적으로 단일 명령에도 auto-Commit이 걸려있습니다.
단일 쿼리문도 자동으로 커밋이 되는것을 의미합니다.
확인명령어
SELECT @@AUTOCOMMIT;

트랜잭션 사용해보기
1.START TRANSACTION
START TRANSACTION;
2.필요한 쿼리문 사용
INSERT INTO user(name,password) values("aa", "123123!")
INSERT INTO user(name,password) values("bb", "123123!")
3.COMMIT or ROLLBACK
# 성공적으로 수행한 경우
COMMIT;
# 롤백이 필요한경우
ROLLBACK;
- COMMIT을 할 경우 두 개의 쿼리문이 수행되며
- ROLLBACK을 할 경우 아무것도 수행되지 않는다.
'SQL' 카테고리의 다른 글
| [Database] 트랜잭션 격리수준(Transaction Isolation Level) (0) | 2022.10.28 |
|---|---|
| [Database]MySQL 인덱스 (0) | 2022.10.07 |
| [SQL] 데이터베이스 정규화 (1nf,2nf,3nf,bcnf) (0) | 2022.08.02 |
| 이게 바로 개막장 ERD다. (0) | 2022.06.01 |
| JOIN - 테이블을 합치게 해준다 (0) | 2022.05.12 |