분산 환경에서 MySQL Named Lock으로 분산 락을 구축하고, 동시성 제어하기
·
Backend/Spring Boot
Introduce본 게시글에서 다루는 모든 테스트 코드는 아래 레포지토리에서 확인하실 수 있습니다. GitHub - WooJJam/concurrency-deep-diveContribute to WooJJam/concurrency-deep-dive development by creating an account on GitHub.github.com 풋살 매치 참가 신청 서비스를 개발하던 중, 매치의 정원을 초과하여 참가자가 등록되는 문제를 발견하였다. 실제로 매치에는 최대 12명이 참여 가능했으나, 동시 요청이 몰릴 경우 12명을 훌쩍 넘는 인원이 등록 되었다. 단일 사용자의 신청 흐름은 단순하다.풋살 매치 조회현재 참가자 수 확인참여 가능하다면 참가자 InsertPG사 결제 API 호출결제 성공 및 실패..
공간 인덱스로 조회 속도 58배 향상시키기
·
Backend/MySQL
1. Introduce현재 좌표를 기준으로 주변 데이터들을 조회하는 기능을 개발하고자 한다.다음 그림처럼 원의 중간점을 현재 좌표로 설정하였다면 줌 레벨에 따라 반경 (X) Km의 원 내에 존재하는 데이터들을 조회하는 기능을 구현하고자 한다. 어렴풋이 공간 데이터, 공간 함수에 대해서 들어본적이 있었기에 현재 사용중인 데이터베이스인 MySQL의 공간 데이터, 공간 함수, 그리고 공간 인덱스를 통한 성능 개선을 해보고자 한다.2. Spatial Data공간 데이터란 말 그대로 공간 정보를 저장할 수 있는 데이터베이스를 의미한다.다음 그림은 MySQL에서 제공하는 공간 데이터 타입이다.Point좌표 공간의 한 지점POINT(10 10)LineString다수의 Point를 연결해주는 선분LINESTRING(..