개발

개요경매 글 목록을 불러오는 api의 구조를 개선하여 목표하는 성능까지 올려보는 과정을 기록하고자 해당 시리즈를 작성하기로 하였습니다. 본론에 앞서서 해당 프로젝트의 더미 데이터로 유저 약 100만, 기프티콘 개수 약 2천만, 경매 글 개수 약 100만 개를 생성해놓은 상태입니다. 문제 인식부하 테스트를 하기 전, postman으로 먼저 간단하게 응답 시간이 얼마나 걸리는지 테스트 해봤습니다. 응답 시간이 매우 느립니다.. 네 이건 뭐 부하테스트를 할 필요도 없이 먼저 해당 API의 문제를 살펴보는 것이 좋을 것 같다는 판단을 했습니다. 전체적인 로직을 파악해본 결과 문제는 아래 부분 정도로 정의했습니다. 1. 페이지네이션 오프셋 성능 저하 문제2. N + 1 문제3. queryDSL 에서 cross j..
· Dev/DB
(모든 설명은 MySQL 8.0 기준 입니다.) 트랜잭션이란? 트랜잭션은 하나의 논리적인 기능을 수행하기 위해 여러 개의 작업 셋을 하나로 묶은 작업의 단위다. 트랜잭션은 원자성, 일관성, 격리성, 지속성 4가지의 특징을 갖는다. (ACID) ACID 원자성 (Atomicity) 트랜잭션을 구성하는 작업 전체가 성공하거나 아니면 전체가 실패하는 것 둘 중 하나만을 보장한다는 특징이다. 트랜잭션을 구성하는 여러 쿼리 중 일부분만 성공하거나 일부분만 실패하면 데이터의 정합성에 문제가 생기게 된다. 예시를 보면서 이해해보자. 기능 : 은행 시스템의 송금 송금 기능의 순서 1. 계좌 잔액 테이블에서 송금자 A의 잔액을 차감한다. 2. 계좌 잔액 테이블에서 돈을 받는 B의 잔액을 추가한다. 3. 거래 내역 테이블..
· Dev/PS
문제 n가지 종류의 동전이 있다. 각각의 동전이 나타내는 가치는 다르다. 이 동전을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그 경우의 수를 구하시오. 각각의 동전은 몇 개라도 사용할 수 있다. 사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다. 입력 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 경우의 수를 출력한다. 경우의 수는 231보다 작다. 풀이 더보기 package footdev._5주차; import java.io.*; import java.util.*; public class BOJ_동전_1 { ..
풋데브
'개발' 태그의 글 목록