반응형

index 2

[DB] index_merge 비활성화를 통한 Using Intersect 쿼리 효율 개선 일지

MySQL을 사용하고 있는 사이드프로젝트 모카콩에서 아래 Slow Query를 발견했다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 select comment0_.comment_id as comment_1_2_, comment0_.created_time as created_2_2_, comment0_.modified_time as modified3_2_, comment0_.cafe_id as cafe_id6_2_, comment0_.content as content4_2_, comment0_.is_masked as is_maske5_2_, comment0_.member_id as member_i7_2_ from comment comment0_ left outer..

CS/Database 2023.07.28

[JPA] unique 동시성 이슈 해결 및 CountDownLatch 테스트 작성 (Feat. Unique Index)

사이드 프로젝트를 하면서 동시성 이슈를 만났다. 모바일 프론트 측에서 api 테스트를 하다가, 즐겨찾기 엔티티가 연달아 두 번 등록되는 이슈가 있었던 것이다. 그리고 즐겨찾기 엔티티는 repository에서 Optional과 같은 꼴로 반환되게 했기 때문에, 두 개 이상의 결과가 반환되면 NonUniqueResultException 가 발생한다. 이러한 동시성 이슈가 발생하는 데에는, 두 스레드가 거의 동시에 진행됐기 때문이다. 사실 트래픽이 조금이라도 많으면 이러한 동시성 이슈는 흔히 만날 수 있다. nGrinder로 save 관련 메서드에 수십개의 스레드로 테스트를 돌려보자. 아래 사진은 nGrinder로 회원가입 메서드를 수십개의 스레드로 5초동안 실행시킨 결과이다. 원래대로라면 같은 이메일, 같은..

1
반응형