전체 사용자 포인트 조회 쿼리 개선하기
·
당장 프로젝트
읽기 전이 글은 문제를 처음 해결해본 내용이라 부족한 점이 많습니다. 예전의 제가 이렇게 문제를 해결하려 했구나 정도로 봐주시고, 마지막에 개선이 필요한 부분을 정리해 두었으니 참고하며 읽어주시면 좋겠습니다.조인 쿼리 개선하기1. 현재 상황'당장' 서비스에는 유저 포인트 관리를 위해, 모든 유저의 포인트를 조회하는 API가 있는데, 속도가 너무 느려 개선해보려고 한다. ERD아래 ERD에서 User 테이블과 PointHistory 테이블을 확인해 보자User 테이블에는 사용자 정보가 저장되어 있고, PointHsitory에는 포인트 적립 및 사용 내역이 기록되고 있다. 예를 들어, oauth_id가 1인 유저가 혈당을 기록하여 200 포인트를 적립 받았다면, PointHistory 테이블에는oauth_i..
연속 요청으로 인한 데드락 문제 해결하기
·
당장 프로젝트
문제 발견현재 ‘당장’ 서비스를 운영하고 있는 중인데, 가끔 point_history 테이블에 대해 데드락 문제나 중복키 문제가 발생했다. 데드락 발생 로그ERROR - Deadlock found when trying to get lock; try restarting transaction ... (생략) 중복키 발생 로그ERROR - Duplicate entry '더블PKID' for key 'point_history.PRIMARY' ... (생략)문제 원인로그를 통해 point_history 테이블에 insert할 때 위의 두 문제가 발생함을 확인할 수 있었다.  발생원인로그를 통해서 동시에 동일한 접속 요청이(같은 유저, 시간,분,초까지 동일한) 2번 있는 것을 확인했다. 말로만 듣던 따닥 (연속) ..