본문 바로가기

Database/MySQL3

조회 성능 개선을 위한 반정규화 및 인덱스 설계 - Part. 2 - 조회 성능 개선을 위한 반정규화 및 인덱스 설계 - Part. 1- 조회 성능 개선을 위한 반정규화 및 인덱스 설계 - Part. 2 이전 포스팅에 이어 이번에는 검색, 정렬에 대한 요구사항이 추가됨에 따른 쿼리의 성능 비교를 해보려고 한다.상품 목록 조회 시 상품 좋아요 항목이 같이 조회되어야 한다.상품 목록은 브랜드 ID, 상품명으로 검색이 가능해야 한다.상품 목록은 최신순, 좋아요 순으로 정렬이 가능해야 한다. 이번엔 이전과 동일한 조건에서 검색 조건으로 brandId, name, brandId&name 3개의 케이스로 성능을 확인해 본다.브랜드(brand): 100건상품(product): 10만 건사용자(member): 1만 건상품 좋아요(product_like): 1000만 건상품 좋아요 수.. 2025. 8. 18.
조회 성능 개선을 위한 반정규화 및 인덱스 설계 - Part. 1 - 조회 성능 개선을 위한 반정규화 및 인덱스 설계 - Part. 1- 조회 성능 개선을 위한 반정규화 및 인덱스 설계 - Part. 2 이번 포스팅에서는 조회 성능을 개선하기 위한 방법들인 반정규화와 인덱스에 대해 알아본다. "조회"란 무엇인가?1. "조회"라는 건 저장된 정보를 사용자가 요청하여 확인하는 것을 의미한다."정보"는 어디에 저장되는가?1. 정보는 보통 데이터베이스(DB)에 저장된다.2. DB는 내부적으로 메모리(Buffer Pool)와 디스크에 정보를 보관한다.3. 사용자가 정보를 조회하면, DB는 먼저 메모리(Buffer Pool)에서 데이터를 찾는다.4. 메모리에 없으면 디스크에서 읽어오며, 이때 Disk I/O가 발생한다.5. 디스크 접근은 메모리 접근보다 훨씬 느리기 때문에, Di.. 2025. 8. 18.
좋아요 수 관리는 단순하지 않다. '좋아요'를 만만하게 보지 말자... '좋아요' 하나에도 정말 많은 고민이 담겨 있다. 좋아요는 게시판이나 상품에서 자연스럽게 떠오르는 추가 기능입니다.저 역시도 게시판이나 상품 기능을 개발할 때면 바로 '좋아요' 기능을 떠올리곤 했습니다. 이번 포스팅에서는 지금까지 제가 좋아요 기능을 만들면서 고민하고 선택해온 과정을 정리해보았습니다. 1. 가장 단순한 구현 - 좋아요 수 컬럼 추가하기 (like_count)가장 단순한 방식은 상품 테이블에 like_count 컬럼을 추가하는 것입니다.CREATE TABLE product ( ... like_count BIGINT DEFAULT 0); 컬럼을 추가하는 것도 간단하고, 좋아요 수도 UPDATE 쿼리로 관리할 수 있어 가장 최단 시간에 구현할 수 있.. 2025. 7. 24.