일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 리마2급2차
- 리눅스 마스터
- Linux
- 프로토콜
- CVE
- db
- 러시아
- Cloud
- 네관사2급
- AWS
- 보안
- tcp
- 보안이슈
- Java
- 스프링
- 오늘의 오답노트
- 악성코드
- 개발자
- 네트워크관리사
- 깃허브
- security
- 트랜잭션
- 네트워크
- 오답노트
- 스프링부트
- SSO
- 클라우드
- 제로 트러스트
- 리눅스
- 기업간의 협업 중요성
Archives
- Today
- Total
일단 진행시켜
트랜잭션, 동시성 제어 본문
1. 트랜잭션
- DBMS에서 실행되는 단일 작업 단위
- 한 번에 실행되어야 하는 단위
- 특히 여러 트랜잭션이 동시에 발생할 수 있는 다중 사용자 환경에서 데이터 무결성과 일관성을 보장하는 데 중요
2. 트랜잭션 주요 속성: ACID
2.1. 원자성
- 트랜잭션 내의 모든 작업이 성공적으로 완료되도록 보장한다.
- 작업이 실패하면 트랜잭션 중단 -> 모든 변경 사항이 rollback -> 원래 상태 유지
2.2. 일관성
- DB의 무결성 제약 조건과 규칙을 유지하면서 DB를 하나의 유효한 상태에서 다른 유효한 상태로 가져오도록 보장한다.
2.3. 독립/격리성
- 외부 간섭 없이 트랜잭션이 독립적으로 발생하도록 보장한다.
- 트랜잭션의 중간상태는 다른 트랜잭션에서 보이지 않으므로, 트랜잭션의 부분적인 결과를 볼 수 없게 된다.
2.4. 영구성
- 일단 트랜잭션이 commit 되면 시스템 오류가 발생하더라도 변경 사항이 영구적으로 유지되도록 보장한다.
DBMS에서 Transaction을 구현하려면 아래와 같은 SQL문을 사용한다.
BEGIN TRANSACTION;
INSERT INTO accounts (account_id, balance) VALUES (1, 1000);
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;
새 계좌 1을 삽입하고, 1에서 2라는 계좌로 100을 이체하는 작업이다.
이러한 작업 중 하나라도 실패하면 일관성과 무결성이 깨진다.
➕
일관성: 모든 작업이나 트랜잭션 이후 데이터의 정확성과 유효성
무결성: 정확성, 유효성, 일관성 유지
작업 중 하나라도 실패하더라도, 일관성과 무결성을 유지해야 한다.
그러기 위해서 트랜잭션 rollback을 한다.
다시 표로 정리해보자.
Atomicity | ALL or NOTHING commit / rollback |
Consistency | ex. 계좌 잔액음 음수가 될 수 없음 |
Isolation | 트랜잭션 작업 수행 중에는 다른 트랜잭션에 영향을 주어서도/받아서도 안 됨 |
Durability | 시스템 문제 여부와 상관없이 완료된 데이터는 영구적으로 DB에 저장 |
2. 동시성 제어 메커니즘
특히 다중 사용자 환경에서 트랜잭션을 올바르게 처리하기 위해 동시성 제어 메커니즘을 사용한다.
여러 사용자가 동시에 DB에 접근할 때 발생할 문제를 방지/해결한다.
동시성 제어의 장점?
➡️ 여러 사용자가 동시에 같은 DB에 접근할 때 발생할 문제를 해결해 줌
➡️ 데이터 무결성, 일관성 유지
➡️ 직렬성 보장: 순차적 처리 결과와 동일한 상태를 유지
➡️ 시스템 처리량 증가
동시성 제어의 문제점❗
1. 갱신 손실(Update Loss)
- 두 트랜잭션이 동시에 같은 데이터를 업데이트할 때 한 트랜잭션의 변경사항이 다른 트랜잭션에 의해 덮어쓰게 되어
- 의도와는 다른 결괏값이 저장됨
2. 상태 결정 오류(Error in Determining Status)
- 여러 트랜잭션이 동시에 실행될 때 데이터의 상태를 잘못 판단하여 생기는 오류
- 데이터 일관성을 해침
3. 모순(Contradiction)
- 동시성 제어가 제대로 이루어지지 않으면 두 개 이상의 트랜잭션이 서로 상충되는 작업을 수행할 수 있음
- 하나의 트랜잭션이 변경하는 동안 다른 트랜잭션이 해당 데이터를 변경하면 데이터 무결성이 깨지게 됨
4. 연쇄 복귀(Cascading Rollback)
- 한 트랜잭션이 rollback 할 때, 연관된 트랜잭션도 같이 rollback을 못 하는 경우
'🗄️Data Base 아는 것도 다시보자' 카테고리의 다른 글
DB 장애 회복 기법: REDO, UNDO (0) | 2024.08.13 |
---|---|
[JOIN] RDBMS의 궁극적 목적 (0) | 2024.08.04 |
[DB] Basic SQL, DB 구성 요소 (0) | 2024.08.04 |