내일배움캠프 TIL

트랜잭션이란? 본캠프 12/12

parkcw0325 2024. 12. 12. 20:18

POINT 1.   

트랜잭션이란?

 

간단한 설명! 

**트랜잭션(Transaction)**은 데이터의 완전성을 보장하기 위한 개념으로, 작업을 전부 처리하거나 전부 실패하게 만들어 데이터의 일관성을 보장하는 기능이다

이를 통해 사용자는 어플리케이션이 안전하게 실행되도록 구성할 수 있다.

 

POINT 2.   

이러한 트랜잭션을 사용하는 이유

 

트랜잭션을 통해 다양한 문제 상황(예: 은행 계좌이체, 영화 예매 시스템 등)에서 데이터의 일관성을 유지할 수 있다

 

예를 들어, A 계좌에서 금액을 차감하고 B 계좌로 금액을 추가하는 과정 중 하나라도 실패하면 작업 전 상태로 복구되게 된다.

만약 복구가 되지 않는다면 A 계좌에서 돈이 차감되었는데 B 계좌에 금액이 들어오지 않아 혼란을 야기할 수 있기 때문이다.

 

POINT 3.   

트랜잭션의 특징

 

트랜잭션의 ACID는 데이터베이스 트랜잭션이 안전하게 수행될 수 있도록 보장하는 네 가지 특징을 의미한다.

3 - 1. 원자성 (Atomicity)

  • 원자성은 트랜잭션 내에서 실행된 명령들이 전부 성공하거나 전부 실패해야 한다는 것을 의미한다.
  • 트랜잭션의 작업들을 하나의 묶음으로 처리하여, 부분적으로 실행되거나 중단되지 않도록 한다.

예시:

  1. A 계좌에서 금액 차감
  2. B 계좌에서 금액 추가

아까 위에 예시한 상황처럼 이 두 작업이 하나의 트랜잭션으로 묶여야 하며, 하나라도 실패하면 모든 작업이 롤백된다.

 

3 - 2. 일관성 (Consistency)

  • 트랜잭션은 데이터의 일관성을 유지해야 한다
  • 작업이 성공하면 데이터는 정상적으로 저장되며, 실패할 경우 작업 도중 발생한 오류 상태가 남아있지 않도록 복구된다.

예시: 강의 테이블에 강의를 생성하고, 목록 테이블에 강의 영상을 삽입하는 작업 중 하나라도 실패하면 모든 작업이 롤백되어 데이터베이스 상태가 유지된다.

3 - 3 격리성 (Isolation)

  • 트랜잭션이 실행 중일 때, 다른 트랜잭션은 해당 데이터에 접근할 수 없다
  • 이를 통해 트랜잭션의 중간 상태나 중간 결과가 외부에 노출되지 않도록 보장한다.

중요 개념:

  1. 동시성 (Concurrency): 여러 클라이언트가 동시에 데이터를 사용하는 것.
  2. 격리 수준 (Isolation Level): 트랜잭션 격리의 강도를 설정하는 옵션.

3 - 4 지속성 (Durability)

  • 트랜잭션이 성공적으로 커밋되면 해당 결과는 영구적으로 저장된다.
  • 시스템 오류가 발생하더라도 트랜잭션 로그를 통해 복구 가능하다!

예시: 트랜잭션이 완료된 데이터는 COMMIT 명령을 통해 데이터베이스에 영구적으로 저장되게 된다.

 

POINT 4.   

트랜잭션의 구현(MySQL)기준

  • 락(Lock): 트랜잭션이 사용하는 데이터를 다른 트랜잭션이 접근하지 못하도록 방지.
  • 트랜잭션 로그(Transaction Log): 트랜잭션 상태를 기록하여 시스템 복구에 활용.

 

 

결론 

트랜잭션은 데이터베이스의 일관성과 안정성을 유지하기 위한 필수 개념이다.

트랜잭션의 ACID 특징을 이해하고 적절히 활용하면, 데이터 무결성과 신뢰성을 보장할 수 있게 된다.

이를 통해 다양한 어플리케이션의 안전성을 확보할 수 있다!!