Posts 트랜잭션 격리 수준
Post
Cancel

트랜잭션 격리 수준

트랜잭션 격리 수준

트랜잭션의 전파는 트랜잭션이 어떻게 동작할 것인가를 결정하는 방식을 의미한다.

앞선 설명에서 다른 스레드이므로 다른 트랜잭션이 열린다.

다른 스레드이므로 이미 존재하는 트랜잭션의 값을 읽어올 수 없다..?

다른 스레드의 트랜잭션이 변경한 값을 읽어오는 게 가능한지는 알아봐여함

  • 이미 존재하는 트랜잭션에 참여

    이미 존재하는 트랜잭션에 참여하여 같은 트랜잭션 안에서 작업을 수행한다.

    하나의 작업에만 rollback이 발생해도 같은 트랜잭션 내의 모든 작업들이 rollback된다.

  • 독립적인 트랜잭션을 생성

    이미 트랜잭션이 존래하거나 트랜잭션이 없는 상황에서 새로운 트랜잭션을 추가하여 작업을 진행한다.

    두 작업은 독립적으로 동작한다.

  • 트랜잭션 없이 동작

    단순 읽기와 같이 트랜잭션이 필요하지 않은 특정 작업에 대해 트랜잭션을 걸지 않는다

트랜잭션의 격리 수준을 이용한 동시성 문제 해결

  • DEFAULT

    현재 사용 중인 DBMS의 데이터 접근 기술이나 DB 드라이버의 기본 설정을 적용하는 격리 수준으로 대부분의 DB는 READ_COMMITTED를 기본 격리 수준으로 가진다.

  • READ_UNCOMMITTED

    가장 낮은 단계의 격리 수준으로 트랜잭션이 커밋하기 전에 미리 변경된 값을 읽을 수 있다.

    다른 스레드라면 읽을 수 없다..?

  • READ_COMMITTED

    대부분의 DB에서 기본적으로 사용하는 격리 수준으로 다른 트랜잭션이 커밋하지 않은 정보를 읽을 수 없다.

  • REPEATABLE_READ

    한 트랜잭션이 읽은 ROW를 수정할 수 없도록 막지만 새로운 ROW의 생성은 막지 않음

  • SERIALIZABLE

    동시에 여러 개의 트랜잭션이 테이블에 접근할 수 없도록 설정, 트랜잭션이 순차적으로 실행되도록 한다.

    한 트랜잭션이 테이블에 접근하면 읽기락을 먼저 걸고 쓰기 락을 걸어버린다.


참고자료 :

https://tecoble.techcourse.co.kr/post

https://mangkyu.tistory.com

This post is licensed under CC BY 4.0 by the author.

Contents