Index 3

[쇼핑몰 프로젝트 - 리팩토링] 상품 목록 조회 최적화: N+1 해결 & 인덱스로 31% 개선

0. 개요기존 쇼핑몰 프로젝트의 카테고리별 도서 조회에서 N+1 문제와 조회 속도가 느리다는 문제점이 있었다.리팩토링을 통해 N+1 문제를 해결하고, 인덱스를 통해 조회 속도를 개선했다.이 글은 그 과정을 정리한 글이다.1. 기존 구조의 문제점먼저 프론트를 보면, 해당 페이지에서 필요한 데이터는 bookId, title, price, salePrice, amount 5개다. 하지만 백엔드는 아래 메서드로 엔티티(Page) 자체를 반환했다. 이러한 문제 때문에 N+1 문제가 발생했다.한 번의 리스트 쿼리로 books_categories를 가져온 뒤, 행마다 Book을 개별 조회했다.Book.publisher가 EAGER라 출판사까지 매번 조인됐다.20개의 책을 가져오는데, 결과적으로 요청 1번에 쿼리 23..

[Relational database] 06. SQL ***

Chapter 1: SQL 개요SQL 개요SQL 구성Chapter 2: DDL - Data Definition LanguageDDL: Data Definition LanguageSQL에서 DDL 구문테이블 생성, 수정, 삭제 DDL문실습: 테이블 생성 (MYSQL)Chapter 3: DML - Data Manipulation Language, SQL 질의 기본 구조SQL 질의 형식SELECT 절SELECT 명령 내의 수식과 문자열FROM절WHERE절Chapter 4: 집합 연산UNIONINTERSECTEXCEPTChapter 5: 서브 쿼리서브 쿼리 개요포함된 서브쿼리(Nested subquery)인라인 뷰(Inline view)스칼라 서브쿼리(Scalar subquery)상호 연관 서브쿼리(Correl..

DB 2024.10.04

[Relational database] 04. 파일 조직과 인덱스

Chapter 1: 비용 모델과 파일 조직법비용 모델 개요파일 조직법 비교 기준 연산힙 파일정렬 파일해시 파일파일 조직 선택Chapter 2: 인덱스인덱스 개요클러스터드 인덱스(Clustered Index)넌 클러스터드 인덱스(Non-Clustered Index)밀집 인덱스(Dense Index)와 희소 인덱스(Sparse Index)기본 인덱스(Primary Index)와 보조 인덱스(Secondary Index)복합 키 인덱스실습: 인덱스 생성(MySQL)Chapter 1: 비용 모델과 파일 조직법 DB는 Query가 요청될 때 여러 실행 계획을 세우고 비교하여 최적화된 방법으로 query를 실행한다.(Query Optimizer) 그 중 가장 많이 쓰이는 방법이 Cost Model이고, 파일 조직은..

DB 2024.10.03