SQL - 트랜잭션이란?
SQL - 트랜잭션이란?
트랜잭션이란?
- 여러 작업을 하나의 논리적인 단위로 묶은 것을 의미함.
- 트랜잭션 내 모든 작업이 모두 성공하면 반영(
COMMIT) - 하나라도 실패하면 전부 취소(
ROLLBACK)
- 트랜잭션 내 모든 작업이 모두 성공하면 반영(
- 작업의 신뢰성을 높여줌.
ACID 속성
- 트랜잭션이 신뢰성을 갖추기 위해 반드시 지켜야하는 4가지 속성.
- Atomicity (원자성): 트랜잭션은 더 이상 나눠질 수 없는 논리적 단위이며 모두 성공하거나 모두 실패함.
- 모두 성공:
COMMIT - 모두 실패:
ROLLBACK
- 모두 성공:
- Consistency (일관성): 트랜잭션의 실행 결과가 DB에 설정된 모든 규칙(ex. 제약 조건 등)을 위반하지 않음을 보장하는 속성임.
- 결과의 유효성을 보장함.
- Isolation (격리성): 하나의 트랜잭션이 실행중일 때 다른 트랜잭션이 해당 트랜잭션의 중간 결과에 끼어들어 간섭할 수 없도록 격리함.
- 격리성은 어느 정도로 격리시킬건지에 따라 격리 수준이라는 몇 가지의 단계로 나뉨.
- 격리 수준을 높일 경우 데이터는 안전하지만 성능이 저하됨.
- 격리 수준을 낮출 경우 성능은 향상되지만 데이터의 안전성은 떨어짐.
- 격리성은 어느 정도로 격리시킬건지에 따라 격리 수준이라는 몇 가지의 단계로 나뉨.
- Durability (지속성):
COMMIT된 트랜잭션 결과는 영구적으로 DB에 반영되도록 보장하는 속성
트랜잭션 구문
START TRANSACTION: 트랜잭션 시작을 선언하는 커맨드- 이 명령어 후 실행되는 모든 쿼리는 하나의 트랜잭션에 묶여 관리됨.
BEGIN으로 사용되기도 함.
COMMIT: 트랜잭션 내의 작업이 모두 완료되었고, DB에 영구적으로 반영하라는 의미.COMMIT후에는 변경 내용을 되돌릴 수 없음.
ROLLBACK: 문제가 발생했으니 다시 원본 데이터로 복구하라는 의미.
COMMIT 예시
1
2
3
4
5
6
7
START TRANSACTION; -- 트랜잭션 시작 --
UPDATE articles
SET views = views + 1
WHERE id = 1;
COMMIT; -- 변경 사항 영구 반영 --
ROLLBACK 예시
1
2
3
4
5
6
7
START TRANSACTION; -- 트랜잭션 시작 --
UPDATE articles
SET views = views + 1
WHERE id = 1;
ROLLBACK; -- 원본 데이터 복구 --
This post is licensed under CC BY 4.0 by the author.