강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

정성훈님의 프로필 이미지
정성훈

작성한 질문수

죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.

3장. 작전1: 관계형 데이터베이스 읽고 쓰기 (테이블의 심장에 처형장을 세우다 ☠️)

스냅샷 읽기

작성

·

7

0

cursorReader에서 스냅샷을 읽어서 동일한 스탭에서 데이터가 변경되어도 영향을 받지 않는다 하셨는데,
이거는 mysql의 repeatable read와 관련된 스냅샷인걸까요? 아니면 배치 자체에서 제공하는 스냅샷인가요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

정성훈님, 질문해주신 “스냅샷 읽기” 관련하여, 이는 주로 데이터베이스의 트랜잭션 격리 수준과 관련이 있습니다. 여기서 언급된 스냅샷은 MySQL의 트랜잭션 격리 수준인 “Repeatable Read”와 관련이 있습니다.

스냅샷 읽기와 Repeatable Read

  • 스냅샷: 트랜잭션이 시작될 때의 데이터 상태를 의미하며, 트랜잭션 격리 수준에 따라서 스냅샷이 유지됩니다.
  • Repeatable Read: MySQL에서 기본적으로 제공하는 트랜잭션 격리 수준 중 하나로, 특정 트랜잭션 내에서 동일한 데이터를 반복 조회할 때 항상 일관된 결과를 보장합니다. 즉, 트랜잭션이 시작된 후 다른 트랜잭션이 데이터를 변경하더라도, 최초 트랜잭션의 시작 시점의 스냅샷을 참조하여 일관된 데이터를 제공합니다.

Spring Batch와의 관계

  • CursorReader: 일반적으로 데이터베이스의 커서(cursor)를 통해 데이터를 순차적으로 읽습니다. 이 경우 데이터베이스 트랜잭션의 격리 수준에 따라 스냅샷이 활용될 수 있습니다.
  • Spring Batch 자체의 제공 기능이 아니라, 사용 중인 데이터베이스의 트랜잭션 격리 수준을 이용하여 구현됩니다.

관련된 기존 답변과 유사한 질문을 참고하시면 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

정성훈님의 프로필 이미지
정성훈

작성한 질문수

질문하기