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

ho_0214님의 프로필 이미지

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

기본 키 매핑

여러 서버에서 db 접근 시 동시성문제

24.06.20 17:01 작성

·

140

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
여러 서버에서 db에 접근할 경우 sequence전략의 인덱스 처리가 궁금합니다.
allocationsize를 50으로 설정한 경우

a 서버에서 1~50까지 확보, 다음 인덱스번호 51번
(a서버에서 아직 종료되지 않음)

b 서버에서 인덱스번호 요청 51번 반환, 51~100번 인덱스 사용

만약 해당 상황의 a서버에서 데이터를 3개 추가한 후 종료된다면 1,2,3번 인덱스만 사용되고 4~50번 인덱스는 앞으로 사용되지 않는건가요??

그리고 여러 서버를 작동시키고 이러한 방식으로 사용한다면 중간중간 비어있는 인덱스가 많아질 것인데, 비어있는 인덱스는 재활용이 불가능한지 궁금합니다.

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 06. 20. 17:06

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

질문자님께서 문의하신 여러 서버에서 데이터베이스에 접근할 경우, sequence 전략의 인덱스 처리와 관련된 동시성 문제, 그리고 allocationSize 설정에 따른 인덱스 활용과 재활용 가능성에 대해 궁금해 하신 내용과 관련하여, 유사한 질문에 대한 답변을 찾았습니다. 이는 질문자님의 상황과 직접적으로 관련 있을 수 있는 내용입니다.

  • sequence방식 allocationSize 관련 궁금합니다.
    • 이 질문에서는 allocationSize를 50으로 설정하여 여러 서버에서 사용할 경우 발생할 수 있는 동시성 이슈와 중간에 빈 숫자가 발생하는 문제에 대해 논의되었습니다. 답변에 따르면, allocationSize를 사용하는 경우 중간에 빈 숫자가 발생하는 것은 예상되는 행동이며, 이렇게 되는 부분이 실제 운영에 큰 문제가 되지는 않는다고 합니다. 특히, 대규모 트래픽을 처리하는 서비스에서도 이러한 방식을 사용하고 있으며, long 사이즈는 이런 방식의 사용에 있어서 실제로는 한계가 되지 않는다는 점이 강조되었습니다.

본 답변은 여러 서버를 이용하여 데이터베이스에 접근 시 발생할 수 있는 sequence 전략의 동시성 문제와, allocationSize 설정에 따른 인덱스의 사용 및 비활용 숫자에 대한 이해를 돕기 위한 것입니다. 여러 서버에서 동시에 동일한 시퀀스를 요청하더라도 데이터베이스 측에서 동시성을 관리하여, 겹치지 않는 값이 각 서버에 할당됩니다. 그리고 서버가 중간에 종료되고 일부 인덱스만 사용된 경우, 사용되지 않은 나머지 범위의 번호는 다시 활용되지 않고 넘어가게 됩니다. 이는 시퀀스 값이 항상 단순히 증가하는 구조를 가지며, 빈 숫자의 발생이 일반적인 동작이라는 점을 이해하는 것이 중요합니다.

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

ho_0214님의 프로필 이미지

작성한 질문수

질문하기