DB격리수준 - mysql

LSM ·2021년 8월 27일
0

DB 격리수준 이란 ?

Oracle -> Read Commit

이처럼 오라클은 emp의 11번 장보고를 가져오는것이 아니라 임꺽정을 가져오는데 그이유는 오라클은 commit된 값을 기준으로 read하기 때문이다. 그래서 A가 update 이후 아직 commit을 하지 않았기 때문에 B는 emp의 undo영역에 존재하는 empno 11의 임꺽정을 가져온다.

그렇다면 문제점은?!

공유데이터의 다수의 접근으로 인한 문제가 발생함.

데이터의 정합성이 깨지게 된다 => 부정합성

PHANTOM READ : 데이터의 부정합성 영향에 트랜잭션 과정중 데이터가 보였다 안보였다 보였다 안보였다 하는것.

해결방법은?!

Repetable read 이상을 사용해야 한다.

Repetable read는 undo log에 기록된 것 중 자기보다 낮은 트랜잭션 번호의 log만 본다 따라서 T11은 T12가 중간에 commit하여 undo log에 변경된 값을 인식하지 못한다. 따라서 데이터의 정합성이 유지된다.

Mysql은 Repetable read을 사용한다.

따라서 스프링부트 에서 Mysql에 값을 CRUD하는 상황에서는 트랜잭션의 시작과 종료를 기록하여 데이터의 정합성을 유지하기 위해 @Transactional 을 꼭 붙여준다.

profile
개발 및 취준 일지

2개의 댓글

comment-user-thumbnail
2021년 8월 28일

혹시 대구 중학 자유투 2등 이승민씨 맞으신가요?

1개의 답글