트랜잭션

Do_It·2023년 11월 10일

여러 SQL문을 마치 하나의 오퍼레이션으로 묶는 것.

트랜잭션 A,C,I,D
ATOMICITY - 원자적 연산을 보장
: 중간에 멈추지 않고 연산은 무조건 성공 또는 실패
MySQL에서는 MVCC로 지원 요청
-이전의 데이터를 Undo Log로 저장 후 트랜잭션 실패 시 Undo Log 롤백

-CONSISTENCY - 트랜잭션 종료되었을 때 데이터 무결성 보장

-ISOLATION - 트랜잭션은 서로 간섭하지 않고 독립적으로 동작
: 높은 동시성을 포기해야 함 - 개발자가 격리레벨을 정함으로 조작 가능

Dirty Read : 커밋되지 않은 데이터를 다른 트랜잭션에서 읽은 경우
Non Repeatable Read : 같은 데이터를 조회 했는데 중간에 다른 트랜잭션이 커밋하여 결과가 달라지는 것
Phantom Read : 같은 조건으로 데이터를 읽었을 때, 없던 데이터가 생기는 것

-Non Repeatble Read와 Phantom Read는 비슷하지만 Phantom Read는 범위 조건에 만족하는 데이터 집합에서 발생하는 것이다.
즉 Non은 하나의 데이터에 대한 일관성 문제, Phantom 집합 데이터에 대한 일관성 문제라고 볼 수 있음.

-DURABILITY - 완료된 트랜잭션은 유실되지 않는다
: WAL을 통해 가능

profile
오늘의 노력이 내일의 성장으로 이어지고 있음을

0개의 댓글