이처럼 오라클은 emp의 11번 장보고를 가져오는것이 아니라 임꺽정을 가져오는데 그이유는 오라클은 commit된 값을 기준으로 read하기 때문이다. 그래서 A가 update 이후 아직 commit을 하지 않았기 때문에 B는 emp의 undo영역에 존재하는 empno 11의 임꺽정을 가져온다.
공유데이터의 다수의 접근으로 인한 문제가 발생함.
Repetable read 이상을 사용해야 한다.
Repetable read는 undo log에 기록된 것 중 자기보다 낮은 트랜잭션 번호의 log만 본다 따라서 T11은 T12가 중간에 commit하여 undo log에 변경된 값을 인식하지 못한다. 따라서 데이터의 정합성이 유지된다.
따라서 스프링부트 에서 Mysql에 값을 CRUD하는 상황에서는 트랜잭션의 시작과 종료를 기록하여 데이터의 정합성을 유지하기 위해 @Transactional 을 꼭 붙여준다.
혹시 대구 중학 자유투 2등 이승민씨 맞으신가요?