Transaction

majungha·2023년 4월 25일
1

메모

목록 보기
37/57

오늘의 공부 👍

오늘은 Transaction에 대해서 알아보겠습니다.

📝 결제시 발생할 수 있는 트랜잭션 문제점


  • 결제정보는 저장했는데 중간에 에러가 생겨 로직이 끝났다면 결제정보만 저장되고 사용자의 구매 누적금액은 최신화가 되지 않는다.
  • 데이터가 꼬여서 데이터 오염이 발생한 것입니다. 이런 결제 상황에서 발생할 수 있는 문제를 해결하기 위해 ACID 트랜잭션을 사용한다.
  • 서비스에서 가장 큰 문제 => 데이터의 오염
  • 데이터의 오염보단 차라리 실패하는 것이 더 좋다.

📝 Transaction


  • 처리되는 작업의 단위로, 데이터베이스에서의 Transaction 처리는 Business Logic 상 굉장히 중요한 기능이다.
  • 서로 다른 트랜잭션들을 처리하는 도중 하나의 단위 트랜잭션에서 에러가 발생한다면 이전에 성공했던 트랜잭션들을 다시 rollback 시켜 데이터의 Consistency가 깨지지 않도록 해주는 것이다.
  • 모두 성공했을 경우에는 commit을 통해 확정 지어주게 된다.

▷ DB의 Transaction Flow

  1. 서로 다른 Transaction을 부분적으로 처리합니다.

  2. 모든 Transaction이 정상적으로 완료되면 Commit 합니다.

  3. 만약 Transaction중 하나라도 비정상적으로 처리되면 rollback을 수행합니다.

📝 트랜잭션의 속성들(ACID)


  • A(Atomicity) : 원자성 - 모두 성공할 것 아니면 모두 실패하게 만드는 것이다.(DB의 오염을 막기 위함)
  • C(Consistency) : 일관성 - 똑같은 쿼리를 조회할 때마다 동일한 결과값이 나타나야하는 것이다.
  • I(Isolation) : 격리성 - A 사람의 요청을 처리하는 동안 B사람의 요청은 잠시 기다리는 것이다.
  • D(Durability) : 지속성 - 성공하여 commit이 되었으면 서버를 다시 켜도 그 데이터는 그대로 유지가 되어야 되는 것이다.

출처 및 참고
코드캠프

profile
개발자 블로그 / 항상 겸손한 자세로 배우면서 성장하자 할 수 있다!

0개의 댓글