트랜잭션(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 |
---|