728x90
반응형
SMALL
1. 트랜잭션(Transaction)이란 ❓
- 분할이 불가능한 업무처리의 단위
- 한꺼번에 수행되어야 할 연산의 모음
- 데이터베이스 응용 프로그램은 트랜잭션들의 집합으로 정의 할 수 있음
1-1. 트랜잭션의 특징
- 원자성: 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 함
- 일관성: 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 함
- 독립성(고립성): 어떤 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 끼어들 수 없음
- 영구성(지속성): 결과는 영구적으로 반영되어야 함
1-2. COMMIT
- 모든 작업들을 정상 처리하겠다고 확정하는 명령어
- 해당 처리 과정을 DB에 영구적으로 저장
- COMMIT을 수행하면 하나의 트랜잭션 과정을 종료
- COMMIT을 수행하면 이전 데이터가 완전히 UPDATE
- [MySQL]에서는 AUTO COMMIT이 기본적으로 ON 상태
✅ autocommit 확인
show variables like '%commit%'; -- 'commit'문자열이 들어간 변수 조회
✅ autocommit 켜고 끄기
- set autocommit=0(off), set autocommit=1(on)
set autocommit=0;
show variables like '%commit%';
set autocommit=1;
show variables like '%commit%';
1-3. ROLLBACK
- 작업 중 문제가 발생하여 트랜잭션의 처리 과정에서 발생한 변경사항을 모두 취소하는 명령어
- 트랜잭션이 시작되기 이전의 상태로 되돌림
- 마지막 COMMIT을 완료한 시점으로 다시 돌아감
2. 트랜잭션 작성
start transaction
블록 안의 명령어들은 하나의 명령어 처럼 처리됨
...
성공하던지, 실패하던지 둘 중 하나의 결과가 됨
문제가 발생하면 rollback;
정상적인 처리가 완료되면 commit;
✅ product 테이블에 데이터를 추가하고 commit하기
select * from product;
start transaction; -- 트랜잭션의 시작, commit 또는 rollback으로 끝내야 함
insert into product values('100005', '고철', '팔아요', 100, now());
commit; -- 트랜잭션을 DB에 적용
select * from product;
✅ product 테이블에 데이터 추가하고 rollback하기
start transaction;
insert into product values('100006', '공병', '팔아요', 50, now());
rollback;
select * from product;
3. 트랜잭션의 예외
- DDL문(create, drop, alter, rename, truncate)에 대해 예외를 적용 ➡ rollback 대상이 아님
✅ prodcuct_new 테이블에서 delete문과 truncate문을 작성하고 각각 rollback 해보자.
select * from product_new;
start transaction;
delete from product_new;
select * from product_new;
rollback;
select * from product_new;
truncate table product_new;
select * from product_new;
rollback;
select * from product_new;
💡 DROP/DELETE/TRUNCATE의 차이점에 대해 알아보자!
728x90
반응형
LIST
'DataBase > MySQL' 카테고리의 다른 글
[MySQL] 인덱스(INDEX)에 대해 알아보자! 🧐 (2) | 2023.03.21 |
---|---|
[MySQL] DROP, TRUNCATE, DELETE 차이점에 대해 알아보자! 🧐 (0) | 2023.03.21 |
[MySQL] 뷰(View)에 대해 알아보자! 🧐 (0) | 2023.03.21 |
[MySQL] 사용자 및 권한 설정하기! (0) | 2023.03.21 |
[MySQL] MySQL함수 - 2️⃣문자열 함수 (0) | 2023.03.20 |