본문 바로가기
MySQL

[SQL] 트랜잭션 (Transaction)

by 스응 2023. 4. 19.
728x90
728x90

트랜잭션 (Transaction)

  - 하나의 작업을 수행하는 데 필요한 데이터베이스 연산을 모아놓은 것

  - DB에서 수행되는 작업의 단위

  - 분리될 수 있는 하나 이상의 데이터베이스 조작

 

#  기본 형태

1
2
3
4
5
6
7
8
9
10
11
12
13
-- 트랜잭션 시작
START TRANSACTION;
 
-- 일련의 작업 지정
 
INSERT INTO user_tb(username, password, fullname)
VALUES ('john''1234''kim');
 
INSERT INTO user_tb(username, password, fullname)
VALUES ('mike''222''lee');
 
-- 트랜잭션 완료
COMMIT;
cs

 

트랜잭션 제어어 (TCL)

1) COMMIT

  - 트랜잭션 수행이 성공적으로 완료됨을 선언하는 연산

  - 트랜잭션의 수행 결과가 DB에 반영되고, 일관된 상태를 지속적으로 유지함

      : 실제 물리적 저장장치에 저장됨

2) ROLLBACK

  - 트랜잭션 수행이 실패함을 선언하는 연산

  - DB가 트랜잭션 수행 전의 일관된 상태로 되돌아감

  - COMMIT 연산 이전에만 사용 가능

 

 


트랜잭션의 특성 (ACID)

1) 원자성 (Atomicity)

  - 트랜잭션 내의 연산들이 모두 정상적으로 실행되거나, 아무것도 실행되지 않아야 함

      → 장애 발생 시, 지금까지 실행한 연산 처리를 모두 취소하고, 작업 전 상태로 되돌림

2) 일관성 (Consistency)

  - 트랜잭션이 성공적으로 수행된 후에도, DB가 일관된 상태를 유지해야 함

  - 실행 전의 DB 내용이 잘못되지 않았다면, 실행 후에도 DB 내용이 잘못되지 않아야 함

3) 고립성 (Isolation)

  - 수행 중인 트랜잭션이 완료될 때까지, 다른 트랜잭션들이 중간 연산 결과에 접근할 수 없음

4) 지속성 (Durability)

  - 트랜잭션이 성공적으로 완료된 후에 DB에 반영한 수행 결과는 영구적이어야 함

 

 

320x100
반응형

'MySQL' 카테고리의 다른 글

[SQL] COMMENT  (0) 2023.04.21
[SQL] 쿼리 조건문 (ifnull, nullif, CASE)  (4) 2023.04.20
[SQL] 서브 쿼리  (0) 2023.04.09
[SQL] DCL - 사용자 생성과 권한 설정 (GRANT)  (0) 2023.03.14
[SQL] DML - 데이터 조회 (SELECT) & 집계 함수  (0) 2023.03.11

댓글