LukeHan 의 잡다한 기술 블로그

트랜잭션 격리 수준 레벨 확인 및 변경 본문

Database/Mysql

트랜잭션 격리 수준 레벨 확인 및 변경

LukeHan1128 2022. 9. 12. 20:00
반응형

 

Atlassian Confluence 최신 버전 설치 시 MySql 환경 설정 단계에서 트랜잭션 설정이 필요하여 아래와 같이 정리 하였다.

 

 

환경 구성

  • OS : Windows 10
  • Confluence : 7.19.0
  • MySql : 8.0.29

 

 

 

 

트랜잭션 설정 확인1

select @@global.transaction_isolation;

mysql 에 접속하여 위의 명령어를 입력한다.

 

 

명령어를 실행하면 위와 같이 트랜잭션 설정 정보를 확인할 수 있다.

 

 

 

 

 

 

트랜잭션 설정 확인2

show variables like '%isolation%';

mysql 에 접속하여 위의 명령어를 입력한다.

 

 

명령어를 실행하면 위와 같이 트랜잭션 설정 정보를 확인할 수 있다.

 

 

 

 

 

 

트랜잭션 설정 변경

set global transaction isolation level ${설정할 트랜잭션 레벨};

ex)
set global transaction isolation level read committed;

mysql 에 접속하여 위의 명령어를 입력한다.

 

설정 가능한 트랜잭션 레벨은 다음과 같다.

  • Read Uncommitted (레벨 0)
    : 트랜잭션을 수행한 세션이 커밋하기 전, 다른 세션에서 변경한 내용을 확인 할 수 있다.
    더티 리드를 가능하게 하는 격리수준

  • Read Committed (레벨 1)
    : 일반적인 RDBMS 에서 지원하는 트랜잭션 레벨
    트랜잭션을 수행한 세션이 커밋할 때까지 다른 세션에서는 변경한 내용을 조회하거나 같은 레코드를 변경할 수 없다.
    Unrepeatable Read 가 발생할 수 있다.

  • Repeatable Read (레벨 2)
    : 트랜잭션 내에서 다른 트랜잭션이 데이터를 변경 및 커밋 했어도 트랜잭션 시작 시점의 데이터를 보여준다.
    Phantom Read 가 발생할 수 있다.

  • Serializable Read (레벨 3)
    : 선행 트랜잭션이 테이블을 읽은 경우, 해당 테이블에 다른 트랜잭션이 데이터 변경, 삭제, 추가 작업을 하지 못하도록 막는다.
    완벽한 일관성을 제공한다.

 

 

 

 

반응형
Comments