728x90
반응형
SMALL

목차:

  1. 트랜젝션이란?
  2. 특징
  3. 자동커밋
  4. 예외
  5. 삭제 

1. 트랜젝션(Transaction)

    - 분할이 불가능한 업무처리의 단위 (ex.은행에서 송금&입금되는과정)
    - 한꺼번에 수행되어야 할 연산의 모음
    
    commit: 모든 작업들을 정상 처리하겠다고 확정하는 명령어로써, 해당 처리 과정을 DB에 영구적으로 저장
    rollback: 작업 중 문제가 발생되어 트랜젝션의 처리 과정에서 발생한 변경상항을 모두 취소하는 명령어
    
    start transaction;
        블록안 명령어들은 하나의 명령어처럼 처리됌
        ...
        성공하던지, 실패하던지 둘 중 하나의 결과가 됌
        문제가 발생하면 rollback;
        정상적인 처리가 완료되면 commit;



2. 트랜젝션의 특징

    - 원자성: 트랜젝션이 데이터베이스에 모두 반영 되던가, 아니면 전혀 반영되지 않아야 함
    - 일관성: 트랜젝션의 작업 처리 결과가 항상 일관성이 있어야 함
    - 독립성: 어떤 하나의 트렌젝션이라도, 다른 트렌젝션의 연산에 끼어들수 없다 (ex.영화관 매표할때 자리 지정)
    - 영구성: 결과는 영구적으로 반영되어야 함

 

 

3. 자동 커밋 

# 자동커밋 확인
show variables like '%commit%';

# autocommit: on -> 자동으로 commit 해줌
# set autocommit=0 (off), set autocommit=1 (on)
set autocommit=1; # 1은 켜기 0은 끄기
start transaction;               # 트랜젝션의 시작. commit or rollback으로 끝내야 함 
insert into product values ('100005', '고철', '팔아요', 100, now());
rollback;
select * from product;


4. 트랜젝션의 예외

DDL문(create, drop, alter, rename, truncate)에 대해 예외를 적용 -> rollback 대상이 아님


5. 삭제 (truncate)

# 개별적으로 행을 삭제할 수 없으며, 테이블 내부의 모든 행(데이터)를 삭제
# rollback이 불가능
# 트랜젝션 로그에 한 번만 기록하므로 delete 구문보다 성능면에서 빠름
# truncate table 테이블명 = delete from 테이블명

 

 

transaction 예시:

 

select * from product_new;
start transaction;
delete from product_new;
select * from product_new;
rollback;

start transaction;
truncate table product_new;
select * from product_new;
rollback;

select * from product_new;
728x90
반응형
LIST

'DBMS > MySQL' 카테고리의 다른 글

MySQL- 인덱스(index  (1) 2023.03.21
MySQL- View  (0) 2023.03.21
MySQL- 사용자 추가하기  (0) 2023.03.21
MySQL- 데이터 조작(select)  (0) 2023.03.16
MySQL- 연산자  (0) 2023.03.16

+ Recent posts