트랜잭션이란?
- 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위를 뜻한다.
- 상태를 변경시킨다는 것은 SELECT, UPDATE, INSERT, DELETE의 행동을 뜻함 !
- 트랜잭션은 상황에 따라 여러 개 만들어 질 수 있으며 그 하나의 트랜잭션은 Commit(저장) 되거나 Rollback(철회) 될 수 있다.
트랜잭션 특징 4가지
- 원자성(Atomicity)
- 트랜잭션이 DB에 모두 반영되거나 전혀 반영되지 않거나를 뜻함.
- All or Nothing
- 일관성(Consistency)
- 트랜잭션 작업 처리 결과가 항상 일관되어야 한다. 즉 데이터 타입이 반환 후와 전이 항상 동일해야 한다.
- 독립성(Isolation)
- 하나의 트랜잭션은 다른 트랜잭션에 끼어들 수 없고 독립적인 것을 의미한다.
- 각각의 트랜잭션은 독립적이라 서로 간섭이 불가능함
- 지속성(Durability)
- 트랜잭션이 성공적으로 완료되면 영구적으로 결과에 반영되어야 함
- 보통 commit이 된다면 지속성은 만족할 수 있다.
트랜잭션 격리수준(Isolation level)이란
트랜잭션 격리수준이란?
- 동시에 여러 트랜잭션이 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지? 말지?를 결정하는 것이다.
왜 필요할까? 왜 알아야할까?
- 트랜잭션 수준 읽기 일관성(Transacntion-Level Read Consistency)을 지키기 위해서다.
- 트랜잭션 수준 읽기 일관성이란?
- 트랜잭션이 시작된 시점으로부터 일관성 있게 데이터를 읽어 들이는 것을 뜻함.
- 하나의 트랜잭션이 진행되는 동안 다른 트랜잭션에의해 변경사항이 발생하더라도 이를 무시하고 계속 일관성 있는 데이터를 보여주게 된다 (트랜잭션 자신이 발생한 변경사항은 읽을 수있다.)
- 즉 동시성 제어 문제 해결을 위해서임 !
트랜잭션 격리수준 4가지

READ-UNCOMMITED (커밋되지 않은 읽기)
- READ UNCOMMITED 격리 수준에서는 각 트랜잭션 변경 내용이 COMMIT이나 ROLLBACK 여부와 상관 없이 다른 트랜잭션에서 보여지게 된다.
발생할 수 있는 문제 - Dirty Read(더티리드)
-
더티리드란?
- 다른 트랜잭션에서 처리한 작업이 완료되지 않았음에도 불구하고 다른 트랜잭션에서 볼 수 있게 되는 현상을 뜻함.
