inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

통계 수치와 관련된 컬럼

184

RookieLsou

작성한 질문수 4

0

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

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

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

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

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

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

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

mysql dbms/rdbms database dba

답변 2

1

JSCODE 박재성

안녕하세요 RookieLsou님!

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

 

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

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

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

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

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

 

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

1

RookieLsou

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

0

인프런 AI 인턴

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

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

  2. 역정규화의 장점:

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

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

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

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

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

0

pm.team

두 개 링크 모두 404 오류 뜨네요.

진짜중복/가짜중복을 나누는데 있어서

0

34

2

규칙 1에 대해서

0

53

2

강사님도 실제로 구글 시트에 이런식으로 적으면서하는걸까요?!

0

56

2

만약 신고사유가 객관식 다운드롭형태일때는 테이블을 따로 분리하는건가요??

0

56

2

설문 후속강의 쿠폰 제공 이벤트에 대해서

0

76

2

FK 값 중복과 규칙 3 질의

0

76

2

7-42. 역정규화 섹션에 나온 참고글 링크

0

44

2

[JSCODE 쇼핑몰 (2)] 상품 테이블의 등록한 사람 질문 입니다.

0

49

1

몽고DB 강의 계획

0

80

2

프론트단에서 고정 저장 / 백엔드에서 조회 저장

0

90

1

게시글 작성자 Id(사용자 FK) 숫자가 맞나요?

0

96

2

UI를 보고 저장해야할 데이터인지 파악하는 팁이 있을까요?

0

97

2

안녕하세요 강사님 문의 사항이 있습니다

0

110

2

실제 개발에 들어가거나 서비스 운영 중에도 DB설계를 바꾸나요?

0

233

2

관리자 테이블

0

228

2

외래 키 지정은 필수가 아닌 건가요?

0

256

2

게시판 닉네임, 아이디 관련질문

0

126

2

개발자 및 DB 설계 관련 질문

0

155

1

중복데이터 질문 있습니다.

0

104

2

db 컬럼에 JSON 박아도 되나요?

0

316

2

erd 진짜 안그려도 되나요

0

279

2

그냥 하나씩 만들어나가면서 DB 설계를 그때그때 하는건 틀린건가요?

0

107

2

JSCODE 게시판에서 댓글 관련하여 설계

0

130

2

주문수량과 재고량 관련하여 테이블 분리시

0

200

2