동기/비동기 & 블로킹/논블로킹 진짜 아는 거 맞아요?(Ft.쇼핑몰)
·
Spring
온닷 리팩토링 과정에서 빠른 일정 생성 로직을 비동기를 통해 분리하려고 한다그런데 구현 도중 비동기랑 논블로킹의 차이가 뭔지 감이 안와서 이번 기회에 제대로 정리해보려고 한다예시는 쇼핑몰 사이트를 기준으로! 동기 VS 비동기동기와 비동기는 작업 완료 여부에 따라 다음 작업을 수행하는 방식을 말한다간단히 말하면 호출한 작업의 완료를 호출한 쪽에서 신경 쓰는가, 그렇지 않은가의 차이다 동기(Synchronous)함수를 호출한 곳(호출자)이 결과가 나올 때까지 기다리는 방식이다요청과 결과가 한 자리에서 동시에 발생하며, 호출한 작업이 끝날 때까지 다음 작업을 시작하지 않는다마치 세탁 -> 설거지 -> 청소를 순서대로 하는 것과 같다고 생각하면 된다장점 : 설계가 직관적이고 간단단점 : 한 작업이 끝날 때..
Auto Increment를 막쓰면 문제가 될 수도..?(with Lock)
·
Spring/JPA
1. 언제 Auto Increment를 사용할 때 문제가 발생하나요?예시 시나리오logs 테이블에는 id 컬럼이 있고, AutoIncrement로 설정되어 있다현재 id의 최댓값이 4라고 가정한다P1 트랜잭션이 시작되어 insert를 3번 실행 → 부여된 ID: 5, 6, 7하지만 아직 P1 트랜잭션은 커밋되지 않은 상태이다동시에 P2, P3도 각각 insert 실행 → 부여된 ID: 8, 9 (이들은 트랜잭션을 커밋함) 문제가 발생할 수 있는 상황이전에 처리한 최대 ID를 구해 lastProcessedId에 저장 (예: 4)현재의 최대 ID를 구해 maxId에 저장 (예: 9)lastProcessedId보다 크고 maxId보다 작거나 같은 ID 목록을 조회해 ids에 저장 (이 시점에는 DB에서 [8,..
chobo99
'Spring' 카테고리의 글 목록