Database

[MySQL] 트랜잭션

2023. 3. 8. 02:52
목차
  1. 트랜잭션

트랜잭션

트랜잭션은 작업의 완전성을 보장해 주는 것이다. 논리적인 작업 셋이 완전히 적용되거나 아무것도 적용되지 않아야 한다. 트랜잭션이 없다면 작업 셋의 일부만 변경되는 Partial update가 발생해 문제가 생길 수 있다.

 

InnoDB 스토리지 엔진은 트랜잭션을 지원하지만 MyISAM이나 MEMORY 스토리지 엔진은 트랜잭션을 지원하지 않는다.

 

AUTO-COMMIT을 활성화하고 MyISAM 테이블과 InnoDB 테이블을 생성

 

mysql> SET auto-commit=ON;
mysql> CREATE TABLE tab_myisam( fdpk INT NOT NULL, PRIMARY KEY (fdpk) ) ENGINE=MyISAM;
mysql> CREATE TABLE tab_innodb( fdpk INT NOT NULL, PRIMARY KEY (fdpk) ) ENGINE=INNODB;

 

PK가 3인 레코드를 1건 저장

 

mysql> INSERT INTO tab_myisam (fdpk) VALUES (3);
mysql> INSERT INTO tab_innodb (fdpk) VALUES (3);

 

PK가 3인 레코드를 포함하는 INSERT 문을 실행. 키가 중복되어 SQL 에러가 발생

 

mysql> INSERT INTO tab_myisam (fdpk) VALUES (1), (2), (3);
ERROR 1062 (23000): Duplicate entry '3' for key 'tab_myisam.PRIMARY'
mysql> INSERT INTO tab_innodb (fdpk) VALUES (1), (2), (3);
ERROR 1062 (23000): Duplicate entry '3' for key 'tab_innodb.PRIMARY'

 

MyISAM은 1, 2 번 레코드를 저장한채 쿼리를 종료하지만 InnoDB는 해당 트랜잭션을 롤백

 

mysql> select * from tab_myisam;
+------+
| fdpk |
+------+
|    1 |
|    2 |
|    3 |
+------+

mysql> select * from tab_innodb;
+------+
| fdpk |
+------+
|    3 |
+------+

'Database' 카테고리의 다른 글

[MySQL] 데이터 압축  (0) 2023.03.24
[MySQL] 잠금  (0) 2023.03.15
[MySQL] InnoDB 스토리지 엔진 아키텍처 - 4  (0) 2023.03.01
[MySQL] InnoDB 스토리지 엔진 아키텍처 - 3  (0) 2023.02.08
[MySQL] InnoDB 스토리지 엔진 아키텍처 - 2  (2) 2023.02.01
  1. 트랜잭션
'Database' 카테고리의 다른 글
  • [MySQL] 데이터 압축
  • [MySQL] 잠금
  • [MySQL] InnoDB 스토리지 엔진 아키텍처 - 4
  • [MySQL] InnoDB 스토리지 엔진 아키텍처 - 3
acisliver
acisliver
acisliver
와당탕탕 개발놀이터
acisliver
전체
오늘
어제
  • 분류 전체보기 (65)
    • 회고 (11)
    • Spring (3)
    • 알고리즘 (21)
    • Java (2)
    • DevOps (2)
    • Shell (2)
    • Nginx (1)
    • Database (22)
    • Project (1)

블로그 메뉴

  • 태그
  • 방명록
  • GitHub
  • Notion

공지사항

인기 글

태그

  • 풀스택
  • 자바
  • Bash
  • Leetcode
  • 프리코스
  • FOSSLight
  • Java
  • 카카오
  • 프로그래머스
  • 이진탐색
  • 풀 테이블 스캔
  • FuntionalInterface
  • DevOps
  • dp
  • 오픈소스 컨트리뷰톤
  • 풀 인덱스 스캔
  • 인덱스
  • 오픈소스
  • 알고리즘
  • mysql
  • spring boot
  • 구름톤 트레이닝
  • binarySearch
  • 우아한테크코스
  • 코딩테스트
  • 백준
  • 이분탐색
  • Shell
  • Spring
  • innodb

최근 댓글

최근 글

hELLO · Designed By 정상우.
acisliver
[MySQL] 트랜잭션
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.