인프런 커뮤니티 질문&답변

RookieLsou님의 프로필 이미지
RookieLsou

작성한 질문수

비전공자도 이해할 수 있는 DB 설계 입문/실전

통계 수치와 관련된 컬럼

해결된 질문

작성

·

14

0

배운 내용을 적용해보면서 궁금한 점이 생겨 질문드립니다.

게시판 특성상 계속해서 게시물이 쌓이게 되어 데이터의 양이 늘어날 것이라 생각합니다.

일반적으로 게시글 상세 페이지로 들어가기 전에 페이징된 게시물 리스트를 보면

해당 게시글의 제목, 조회 수, 좋아요 수 등이 표시되기도 하는데

그렇다면 보통 현업에서는 각각의 좋아요 수 쿼리와 조회 수 쿼리를 날려서

많은 데이터들을 그때그때 full scan하도록 하는지

아니면 역정규화를 수행하여 원래 테이블에 좋아요 수나 조회 수 컬럼을 붙여 넣는지 궁금합니다.

답변 2

1

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 RookieLsou님!

좋은 고민하시고 계시네요~!!

 

말씀해주신 대로 각 게시글의 조회수와 좋아요 수를 매번 조회하려면

많은 데이터들을 Full Scan 해야하는 게 성능에 안 좋은 영향을 끼칩니다.

이 때문에 성능을 개선하기 위해 역정규화를 수행하는 방식을 선택합니다!

말씀해주신 대로 테이블에 좋아요 수나 조회 수 컬럼을 붙이는 방식을 선택하기도 하고,

아예 조회용 테이블을 분리해서 관리하기도 합니다!

 

이 외로 궁금하신 점 있으시면 또 질문 남겨주세요:D

RookieLsou님의 프로필 이미지
RookieLsou
질문자

잘 이해했습니다 친절한 설명 감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. RookieLsou님께서 질문하신 “통계 수치와 관련된 컬럼”에 대한 고민은 많은 개발자가 직면하게 되는 효율성과 성능 관련 문제입니다. 데이터베이스 설계에서 조회 수와 좋아요 수 같은 통계 정보를 많이 요청받는 경우, 효율적인 데이터 접근 방법이 중요합니다.

  1. 실시간 쿼리와 Full Scan 문제: 데이터가 계속 증가함에 따라 매번 좋아요 수와 조회 수를 계산하기 위해 실시간 쿼리를 사용하는 것은 성능에 부담을 줄 수 있습니다. 특히, 사용자 요청에 대해 Full Scan을 반복적으로 수행하게 되면 응답 속도가 느려질 수 있습니다.

  2. 역정규화의 장점:

    • 즉각적인 데이터 접근: 데이터를 미리 계산하여 저장함으로써, 매번 계산할 필요 없이 빠르게 접근할 수 있습니다.
    • 조회 성능 향상: 별도의 집계 없이 저장된 값을 즉시 보여줄 수 있어 페이지 로딩 속도가 빨라집니다.

역정규화의 대안
- 데이터베이스 스키마에 바로 통계적인 정보를 포함시키는 역정규화 방식은 조회 성능을 높이는 데 유리합니다. 그렇게 하면 별도의 복잡한 쿼리 없이 게시글의 리스트를 손쉽게 가져올 수 있습니다.
- 다만, 이 방법은 데이터 삽입이나 삭제 시 추가적인 업데이트를 필요로 하므로, 트랜잭션 처리와 관련된 복잡성이 증가할 수 있습니다.

기존 답변에서 유사한 문제에 대한 논의를 확인할 수 있는 링크를 안내드립니다:

각 링크에서는 데이터의 증가를 어떻게 처리하며, 실시간 성능을 어떻게 최적화할 수 있는지에 대한 여러 가지 방법과 실질적인 팁을 제공합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

RookieLsou님의 프로필 이미지
RookieLsou

작성한 질문수

질문하기