Open su3inni opened 5 months ago
회원 서비스에서 데이터를 insert하고 select 하는 것은 가능하지만 다른 멤버십 서비스에서 데이터를 select 할 때 에러 발생하는 상황
COMMIT이 실행되지 않으면, Consistent Nonlocking Reads로 인해 Snapshot이 갱신되지 않아 최초 쿼리 실행시점 이후에 실행된 트랜잭션의 변경사항을 확인하지 못하는 문제가 발생한다.
InnoDB가 특정 시점의 데이터베이스 snapshot을 쿼리에 제공하기 위해 MVCC를 사용하는 것을 의미한다.
트랜잭션 격리 수준 기본값인 REPEATABLE READ일 경우, 같은 트랜잭션 내의 모든 일관된 읽기는 처음 읽기를 수행한 시점의 Snapshot을 읽는다.
https://helloworld.kurly.com/blog/commit-mvcc-set-autocommit/
존재하는 회원 데이터가 조회되지 않는 문제
0-1. 확인해야할 설정
0-2. 발생 가능한 현상
1. 문제가 발생한 부분
1-1. 원인
COMMIT이 실행되지 않으면, Consistent Nonlocking Reads로 인해 Snapshot이 갱신되지 않아 최초 쿼리 실행시점 이후에 실행된 트랜잭션의 변경사항을 확인하지 못하는 문제가 발생한다.
1-2. Consistent Nonlocking Reads?
InnoDB가 특정 시점의 데이터베이스 snapshot을 쿼리에 제공하기 위해 MVCC를 사용하는 것을 의미한다.
트랜잭션 격리 수준 기본값인 REPEATABLE READ일 경우, 같은 트랜잭션 내의 모든 일관된 읽기는 처음 읽기를 수행한 시점의 Snapshot을 읽는다.
2. 해결 방법
2-1. READ COMMITTED 격리 수준으로 낮추기
2-2. 잠금읽기 사용하기
2-3. Transactional(readOnly=true)설정 추가하기
3. 확인하면 좋은 개념