POINT 1.
트랜잭션이란?
간단한 설명!
**트랜잭션(Transaction)**은 데이터의 완전성을 보장하기 위한 개념으로, 작업을 전부 처리하거나 전부 실패하게 만들어 데이터의 일관성을 보장하는 기능이다
이를 통해 사용자는 어플리케이션이 안전하게 실행되도록 구성할 수 있다.
POINT 2.
이러한 트랜잭션을 사용하는 이유
트랜잭션을 통해 다양한 문제 상황(예: 은행 계좌이체, 영화 예매 시스템 등)에서 데이터의 일관성을 유지할 수 있다
예를 들어, A 계좌에서 금액을 차감하고 B 계좌로 금액을 추가하는 과정 중 하나라도 실패하면 작업 전 상태로 복구되게 된다.
만약 복구가 되지 않는다면 A 계좌에서 돈이 차감되었는데 B 계좌에 금액이 들어오지 않아 혼란을 야기할 수 있기 때문이다.
POINT 3.
트랜잭션의 특징
트랜잭션의 ACID는 데이터베이스 트랜잭션이 안전하게 수행될 수 있도록 보장하는 네 가지 특징을 의미한다.
3 - 1. 원자성 (Atomicity)
- 원자성은 트랜잭션 내에서 실행된 명령들이 전부 성공하거나 전부 실패해야 한다는 것을 의미한다.
- 트랜잭션의 작업들을 하나의 묶음으로 처리하여, 부분적으로 실행되거나 중단되지 않도록 한다.
예시:
- A 계좌에서 금액 차감
- B 계좌에서 금액 추가
아까 위에 예시한 상황처럼 이 두 작업이 하나의 트랜잭션으로 묶여야 하며, 하나라도 실패하면 모든 작업이 롤백된다.
3 - 2. 일관성 (Consistency)
- 트랜잭션은 데이터의 일관성을 유지해야 한다
- 작업이 성공하면 데이터는 정상적으로 저장되며, 실패할 경우 작업 도중 발생한 오류 상태가 남아있지 않도록 복구된다.
예시: 강의 테이블에 강의를 생성하고, 목록 테이블에 강의 영상을 삽입하는 작업 중 하나라도 실패하면 모든 작업이 롤백되어 데이터베이스 상태가 유지된다.
3 - 3 격리성 (Isolation)
- 트랜잭션이 실행 중일 때, 다른 트랜잭션은 해당 데이터에 접근할 수 없다
- 이를 통해 트랜잭션의 중간 상태나 중간 결과가 외부에 노출되지 않도록 보장한다.
중요 개념:
- 동시성 (Concurrency): 여러 클라이언트가 동시에 데이터를 사용하는 것.
- 격리 수준 (Isolation Level): 트랜잭션 격리의 강도를 설정하는 옵션.
3 - 4 지속성 (Durability)
- 트랜잭션이 성공적으로 커밋되면 해당 결과는 영구적으로 저장된다.
- 시스템 오류가 발생하더라도 트랜잭션 로그를 통해 복구 가능하다!
예시: 트랜잭션이 완료된 데이터는 COMMIT 명령을 통해 데이터베이스에 영구적으로 저장되게 된다.
POINT 4.
트랜잭션의 구현(MySQL)기준
- 락(Lock): 트랜잭션이 사용하는 데이터를 다른 트랜잭션이 접근하지 못하도록 방지.
- 트랜잭션 로그(Transaction Log): 트랜잭션 상태를 기록하여 시스템 복구에 활용.
결론
트랜잭션은 데이터베이스의 일관성과 안정성을 유지하기 위한 필수 개념이다.
트랜잭션의 ACID 특징을 이해하고 적절히 활용하면, 데이터 무결성과 신뢰성을 보장할 수 있게 된다.
이를 통해 다양한 어플리케이션의 안전성을 확보할 수 있다!!
'내일배움캠프 TIL' 카테고리의 다른 글
웹소켓 게임 만들기 트러블 슈팅TIL 본캠프 12/19 (0) | 2024.12.19 |
---|---|
웹소켓이란? 본캠프 12/13 (0) | 2024.12.13 |
본캠프 12/11 (0) | 2024.12.12 |
OSI 7계층에서 데이터링크 계층이란? 본캠프 12/10 (0) | 2024.12.10 |
본캠프 12/06 TIL (0) | 2024.12.06 |