Transaction? ACID?

싱하·2023년 7월 19일
0

트랜잭션???? ACID??? 이게 뭐야

Transaction

Transaction은 DB를 처음 배울때 보게되는 단어이다.

  • 사전적으로는 DB의 상태를 변화시키는 가장 작은 최소 수행(작업) 단위

  • 쉽게는 SQL을 통하여 DB에 접근하는 행위를 뜻한다.
    SELECT, INSERT, DELETE, UPDATE 등

  • 트랜잭션은 질의가 1가지가아닌 작업의 단위에 따라 달라진다.

예시)
1. 이용자가 게시판에 글 올리기 클릭(게시판에 insert)
2. 올라간 글까지 합하여 게시판에 보여짐(글 select)
사용자는 1가지의 버튼 클릭행위를 했지만 작업은 두가지의 작업이 진행이 됨.

Transaction의 성질

성질은 ACID인 총 4가지로 구성

* Atomicity : 원자성
* Consistency : 일관성
* Independency : 독립성
* Durability : 지속성

Atomicity

원자성.
트랜잭션이 데이터베이스에 모두 반영이 되든/안되든 둘 중 하나이다.

  • 트랜잭션단위로 이루어지지않으면 시스템 이해와 에러 원인분석 또한 어려움

Consistency

일관성.
트랜잭션의 처리 결과가 언제든 항상 같아야 함.
실행이 되고있는 시점에 다른 update가 실행됐다고 결과가 바뀌지않고 트랜잭션이 시작된 그 시점의 결과가 나와야한다.

  • update가 되는 중간에 되어버린 결과값이 나오면 사용자는 update가 안끝났는데 이미 되어버린 결과를 얻어내게 되어 에러로 착각하게 됨

Independency

독립성.
트랜잭션이 실행되는 동안에는 결과값을 다른 트랜잭션이 참조할 수 없음.
사진으로 설명을 하겠습니다.

트랜잭션의 완전 적용 = commit 하기전에는 트랜잭션 실행중이라 B_transaction이 참조 불가능.

Durability

지속성.
트랜잭션이 완료후, 영구적으로 적용이 되어야함.
ex) 계좌 잔액 : 10000원 -출금 : 5000원
계좌 잔액 : 5000원
--1시간 뒤, 계좌 잔액 : 10000원
5000원으로 반영이 되었다가 갑자기 다시 10000원이 되면 당연히 좋겠지만 DB는 이러면 큰일이 남.

Commit, Rollback

트랜잭션 적용, 트랜잭션 복원

commit

트랜잭션의 완전 종료를 DB에게 알려줌

rollback

트랜잭션중 가장 최근에 commit된것까지 복구

이미지로 이해하면 조금 더 쉬울것이다.

DB배움의 기초 of 기초인 트랜잭션과 성질을 공부해보았다.

profile
끄적끄적...

2개의 댓글

comment-user-thumbnail
2023년 7월 19일

좋은 글 잘 읽었습니다, 감사합니다.

1개의 답글

관련 채용 정보