Database 2

이커머스 서비스에서 동시성 문제 처리해보기

동시성이란?여러 작업(스레드)이 공통된 한가지 자원에 동시에 접근하는 것이런 상황에서 주로 발생하는 동시성 문제는 아래와 같다. 경쟁 상태(Race Condition) : 두 개 이상의 스레드가 동시에 공유 자원에 접근하고 수정을 시도할 때 발생한다. 예상치 못한 결과가 발생(DB 일관성이 깨짐)하거나 잘못된 데이터를 조회할 수 있다.교착 상태(Deadlock) : 두 개 이상의 스레드가 서로 다른 자원을 기다리면서 대기하고 있는 상황을 말한다. 서로 다른 스레드가 소유한 자원을 기다리며 멈추어 있다.  이커머스 서비스에서 발생 할 수 있는 동시성 문제재고 갱신시 동시성 문제 : 여러 사용자가 동시에 상품을 구매할 경우, 재고 갱신 과정에서 동시성 문제가 발생할 수 있다. 10명의 사용자가 동시에 같은 ..

Backend/Spring 2024.05.08

[SQL] 게시판 다음글 / 이전글 SQL문

게시판을 만들 때 보면 다음 글과 이전 글에 갈 수 있게 만들어야 되는데 데이터베이스에서 게시판 데이터를 꺼내올 때 게시판 테이블에 하나의 게시판 데이터가 있고 게시글이 차례대로 있으면 아래와 같이 SELECT 문을 써주면 된다. //- 다음 글 - SELECT * FROM '게시판 테이블' WHERE '게시글 번호' = '현재 게시글 번호 + 1'; //- 이전 글 - SELECT * FROM '게시판 테이블' WHERE '게시글 번호' = '현재 게시글 번호 - 1'; 하지만 게시판 테이블 안에 여러 게시판의 데이터가 관리되면 게시판 번호가 똑같지만 글번호 차이가 많이 나게 된다. 그리고 게시판이라는 것이 삭제가 돼서 번호와 번호 사이의 간격이 일정하지 않을 수도 있다. 이럴 때는 아래 SELECT ..