본문 바로가기
CS

트랜잭션이란?

by sangfeeeeel 2021. 10. 23.

트랜잭션(Transaction)이란?


  • 트랜잭션이란, 데이터베이스의 상태를 변화시키기 위해 수행하는 논리적인 작업의 단위를 뜻합니다.
  • 데이터베이스의 상태를 변화시킨다는 것은 DDL, DML을 통해 작업을 수행하는 것을 의미 합니다.
  • 이러한 작업의 단위는 SQL한 문장이 아닌 여러 문장이 될 수 있습니다.
  • 예를들어, 게시판에서 내가 글을 작성하고 다시 게시판으로 돌아오면 내가 작성한 글이 업데이트된 게시판을 보게 됩니다. 여기서 INSERT와 SELECT 둘 다 합친것이 작업 단위 입니다.

 

트랜잭션의 특징(ACID)


  • 원자성(Atomicity) : 트랜잭션의 연산은 모든 연산이 완벽히 수행되어야 하며, 한 연산이라도 실패하면 트랜잭션은 실패합니다.
  • 일관성(Consistency) : 트랜잭션은 유효한 상태로만 변경될 수 있습니다. 트랜잭션이 진행되는 동안에 DB가 변경되더라도, 참조한 DB로만 진행합니다.
  • 독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 실행되어도, 하나의 트랜잭션은 다른 트랜잭션에 끼어들 수 없습니다. 즉, 하나의 트랜잭션이 완료될때까지 다른 트랜잭션의 결과를 참조할 수 없습니다.
  • 지속성(Durability) : 트랜잭션이 성공적으로 완료된다면, 그 결과는 영구적으로 반영되고, 커밋된 후 오류가 발생해도 커밋된 상태로 유지됩니다.

 

트랜잭션 격리수준


  • READ UNCOMMITTED : 다른 트랜잭션에서 커밋되지 않은 내용도 참조할 수 있다.
  • READ COMMITTED : 다른 트랜잭션에서 커밋된 내용만 참조할 수 있다.
  • REPEATABLE READ : 트랜잭션에 진입하기 이전에 커밋된 내용만 참조할 수 있다.
  • SERIALIZABLE : 트랜잭션에 진입하면 락을 걸어 다른 트랜잭션이 접근하지 못하게 한다.(성능 매우 떨어짐)

 

 

'CS' 카테고리의 다른 글

Process와 Thread  (0) 2021.09.22