또리밍밍
693
2019-11-04 17:58:11
4
112

Key값으로 들어가는 데이터 충돌 방지 조언부탁드려요


A라는 테이블에  pk 로 들어가는 데이터는

B 테이블에서 no값을 조회한 후 오늘날짜의 데이터가 없으면 insert,  있으면 no 값을  +1 update 한 값으로 

INSERT 하고 있습니다.

사용자 여러명이 동시에 이벤트를 발생하였을 경우, 조회하는 부분에서 시간차 떄문에 key 가 중복되거나 하여  exception이 발생합니다!

random sleep을 주어야 하는지.. 고수님들 좋은 조언 부탁드립니다


0
0
  • 답변 4

  • 유리세계
    2k
    2019-11-04 18:05:01

    오라클이면 인덱스라는게 있고

    Mysql 이면 자동증가 옵션이 있죠

    요걸 못쓴다면...


    자바단에서 싱크로나이즈 거는 것도 방법인데...

    사용량이 많으면 많을 수록 비추천합니다

    0
  • 자라선
    1k
    2019-11-04 18:16:18

    음... 저라면..

    1. Autoincrement 사용

    2. Insert시 dump데이터로 넣어버리고 update 할때 rownum을 사용


    하지만 어떤것이든 비효율적이네요.. 윗분말씀대로 비동기방식이 제일 베스트인것 같습니다.

    0
  • 또리밍밍
    693
    2019-11-04 18:18:16

    답변감사합니다. ㅠㅠㅠ 자동증가 옵션을 사용못해서 방법을 찾고 있습니다 ㅠㅠ

    0
  • 또리밍밍
    693
    2019-11-04 18:19:11

    그럼  b테이블에서 조회하기 전에 싱크로나이즈 해야하나요?

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.