포인트테이블 부하 개선책 테이블 나누기 효과있을까요

포인트테이블 부하 개선책 테이블 나누기 효과있을까요

QA

포인트테이블 부하 개선책 테이블 나누기 효과있을까요

본문

포인트 테이블 row 가 300만건이 넘어 부하가 심한거 같아요
주기적인 포인트 정리를 하곤 있지만 근본적인 개선책이 떠오르지 않네요.
당장 떠오르는 바ㅇ법은  회원넘버 구간별로 포인트 테이블을 여러개로 나누는건데
이 방법이 효과가 있는거ㅏㄴ지 모르겠네요   괜히 여러개로나눠 관리하기만 번거로워지는건 아닐지
경험있으신분 혹시 다른 개선책 팁도 좋구 조언부탁드려요



이 질문에 댓글 쓰기 :

답변 4

저도 그런점을 고려해서 사이트 만들다 점점 커져서 포기하고 그누보드5를 쓰고 있어요.
 
 
포인트등 여러 테이블에 ROW가 쌓이고 과부하는 피할수 없을것이고
그걸 해결하기 위한 방법을 처음부터 만들어 놔야 나중에 고생 안할것 같아요.
 
 
글쓰신대로 회원번호대로 구간 나눠서 하는거 좋은 방법인듯 합니다.
 
 
문제는 정말 설계를 잘해야겠죠.
자기 생각에는 맞을것 같아서 프로그래밍 했지만 실제로 운영하다 보면 알고리즘이 잘못되어 포인트 적립이나 차감이 꼬일수가 있죠.
 
 
꼭 해보고 싶네요.
남기신 것 처럼 회원 구간 별로 하는 것도 좋을 것 같고..
한~두 개의 게시판에서만 포인트가 활성화 된게 아니라면, 게시판 그룹 별 또는 몇 개의 게시판을 특정지은
포인트 테이블을 따로 마련하는 건 어떨까요?.. 저는 안 해 봤습니다만~ :D

게시판 그룹이나 게시판별로 나누면
각 회원의 포인트 내역을 보여줄때 빡세(?)집니다.

포인트 내역을 보는건 회원이 자신의 내역보기와
관리자가 전체 내역 볼때인데

게시판별로 나누면 가장 많이 보는 회원들의 자기 내역 볼때 비효율적이지요.


최신글 같은 경우 게시판 그룹별로 나누면 효율적일수 있으나...
포인트는 회원별로 또는 회원번호 구간별로 나누는게 효율적인것 같습니다.


조인을 한다면 목록을 년도 단위로 분리하는것도 괜찮을것 같은데 이 경우 역시 규모가 큰 사이트의 경우 년도별로 나눠도 부하가 생길수 있죠.


포인트는 개인정보라서 캐싱도 부적절하죠.

빡세(?)질지는 모르겠네요.
고민과 결정은 원 질문자가 하는 몫이니깐요.

그리고 각 게시판 별이 아닌 포인트 활용량에 따라 게시판 몇개를 묶거나 게시판 그룹에 따라 두~세 개의 포인트테이블을
만들어 쓴다는 것이고, 포인트 열람 역시 각 분류에 따라 볼 수 있게 하고 전체를 보는건 합산 내역만 표기한 곳에
표시하면 되는데, 그게 얼마나 빡세(?)질지는 의문이군요.

어쨌든 나에게 태클을 남기는 것 보단 원 댓글로 질문자에게 조언을 남기는게 낫겠죠?!

포인트 테이블 천만건 이상 쌓여도 페이징 쿼리개선(특히 관리자 페이지), 
주기별 정리작업(1달이상된 포인트 테이블은 합산 row로 처리)
그리고, db서버의 cpu와 memory를 높히면 아무 문제없이 잘 돌아갑니다.

구조를 바꾸는건 마지막에 생각해보세요. 너무 큰 작업입니다.

우선 테이블만 분리하려는거고 구조 자체의 변경은 아닙니다.
common.lib 에 포인트처리 함수 전에 회원별 포인트테이블 구분만 하면 될거라고
생각하고 있거든요.  미처 알지못하는 복잡한 부분이 있다면 어떤 부분때문에 우려하시는지
알고 싶네요.

회원 구간별로 나누신다면 파티션 기능을 활용하는게 나을것 같습니다.
테이블로 나누면 나중에 다시 합산해서 보여줘야 하는 경우도 생길겁니다.
정확히 어떤 경우에 db가 느려지는건지 슬로우쿼리 분석이 먼저일것 같습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 126,609
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT