티스토리 뷰

CS

Transaction과 ACID 이해하기

djunnni 2022. 5. 10. 14:47
728x90

Transaction

Query(질의)를 하나의 묶음으로 처리해서 중간에  실행이 중단될 경우, 처음부터 다시 실행하는 Rollback을 수행

오류없이 실행을 마치면 commit을 하는 실행단위를 의미한다.

 

즉, 한 번 Query가 실행되면 All or Nothing으로 작업을 처리한다.

데이터베이스 상태를 변화시키는 복수의 연산 단위로 구성된 하나의 논리적인 작업단위

주로 DBMS에서는 TPS로 초당 Transaction 실행 수를 측정하고 있음.


Transaction을 사용하는 이유

Transaction은 DB서버에 여러 클라이언트가 동시에 엑세스 또는 업데이트를 처리하는 과정에서 발생할 데이터 부정합을 방지하고자 사용

부정합이 일어나지 않으려면 병렬로 처리하지 않도록 하면  되지만 효율이 떨어짐.

 

병렬로 처리할 수 밖에 없는 상황으로 부정합을 방지하고자 트랜잭션을 이용.

트랜잭션에서 중요한 건 스케쥴 관리이다.


ACID

트랜잭션의 4가지 특성인데

  • 원자성(Atomic)

트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 걸 보장

All or Nothing 개념으로 작업단위를 일부만 실행하지 않는다.

  • 일관성(Consistency)

트랜잭션이 성공적으로 완료가 되면 일괄된 DB상태를 유지

데이터 타입이 갑자기 변경되거나 하는 것 없이 일관성이있음.

  • 격리성(Isolation)

트랜잭션 처리시 다른 트랜잭션 작업이 끼어들지 못하도록 보장

트랜잭션끼리는 서로를 간섭할 수 없음.

  • 지속성(Durability)

성공적으로 수행된 트랜잭션이 영원히 반영

commit을 하면 현재상태  보장.

반응형

'CS' 카테고리의 다른 글

Sync / Async과 Blocking / Non-Blocking의 차이를 이해하자!  (0) 2022.05.10