Skip to content

5조 240821 트랜잭션 학습

Kim Minju edited this page Aug 21, 2024 · 4 revisions

MySQL의 격리 수준

  • 트랜잭션의 격리 수준: 여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할 지 말지를 결정하는 것
DIRTY READ NON-REPEATABLE READ PHANTOM READ
READ UNCOMMITTED 발생 발생 발생
READ COMMITTED 없음 발생 발생
REPEATABLE READ 없음 없음 발생 (InnoDB는 발생 X)
SERIALIZABLE 없음 없음 없음
  • MySQL은 REPEATABLE READ를 주로 사용하고 Oracle의 경우 READ COMMITTED 수준을 많이 사용한다.

READ UNCOMMITTED

  • 트랜잭션에서의 변경 내용이 COMMIT이나 ROLLBACK 여부와 상관 없이 다른 트랜잭션에서 보여진다.
Untitled
  • Dirty Read: 어떤 트랜잭션이 처리한 작업이 완료되지 않았는데도 다른 트랜잭션에서 볼 수 있는 현상
  • Dirty Read 현상은 데이터가 나타났다가 사라졌다가 하는 현상을 초래함

READ COMMITTED

  • 어떤 트랜잭션에서 데이터를 변경했더라도 COMMIT이 완료된 데이터만 다른 트랜잭션에서 조회할 수 있다.
    • Oracle DBMS에서 기본으로 사용되는 격리
Untitled 1 수준
  • NON-REPEATABLE READ: 하나의 트랜잭션에서 똑같은 SELECT 쿼리를 실행했을 때 항상 같은 결과를 갖고지 않는다.
Untitled 2

NON-REPEATABLE READ 상황

REPEATABLE READ

  • ROLLBACK 가능성에 대비해서 동일 트랜잭션 내에서는 동일한 결과값을 보여준다.
    • InnoDB 스토리지 엔진에서 기본으로 사용하는 격리 수준
Untitled 3
  • PHANTOM READ: 서로 다른 트랜잭션에서 수행한 변경 작업에 의해 레코드가 보였다가 안보였다가 하는 현상 → (ex. INSERT QUERY)
    • InnoDB는 REPEATABLE READ에서도 PHANTOM READ가 발생하지 않는다.

SERIALIZABLE

  • 읽기 작업시에도 공유 잠금을 획득해야하며 동시에 다른 트랜잭션이 레코드를 변경하지 못한다.
    • 가장 단순한 격리 수준이면서 동시에 가장 엄격한 격리 수준 → 동시 처리 성능도 다른 트랜잭션 격리 수준보다 떨어져요…

👼 개인 활동을 기록합시다.

개인 활동 페이지

🧑‍🧑‍🧒‍🧒 그룹 활동을 기록합시다.

그룹 활동 페이지

🎤 미니 세미나

미니 세미나

🤔 기술 블로그 활동

기술 블로그 활동

📚 도서를 추천해주세요

추천 도서 목록

🎸 기타

기타 유용한 학습 링크

Clone this wiki locally