대용량 DB 데이터 조회 문제.. 초보자입니다. 0 2 1,230

by 요릭 [SQLServer] 대용량 빠른 최적화 [2016.07.11 10:34:56]


안녕하세요. MS-SQL을 사용하고 있는 초보자입니다.

제가 현재 작은 프로젝트로 웹 게시판을 만들어 성능 개선을 진행중입니다.

게시판은 

select t1.idx, t1.title, t1.user_id, t1.create_time, t1.hit_count, t1.level from (select ROW_NUMBER() over(order by root_idx desc, level asc, seq asc, idx desc) as rownum, idx, user_id, title, create_time, hit_count, root_idx, level, seq from hashtag_board where title is not null and level is not null) as t1 where t1.rownum between #{insertNum1} and #{insertNum2}

해당 쿼리를 사용하여 글을 불러온 후 페이지마다 15개의 글을 뿌려주는데요.

370만건 정도의 게시글을 가진 게시판을 JMeter를 사용하여 부하 테스트를 진행한 결과 5쓰레드 당 1초 정도의 시간이 소모됩니다. 100쓰레드면 거의 20초에 육박합니다.

멘토에게 질문한 결과 테이블을 따로 만들어 최신 글 1만개 정도를 저장하여 쿼리하라는 답변을 들었는데, 어떤식으로 진행해야 할지 감이 잡히지 않습니다.

질문1. 메인 테이블의 일부를 떼어내 서브 테이블을 어떤식으로 만들어야할까요.(또는 해당 주제와 관련된 검색 키워드)

질문2. 위의 방법을 사용하지 않고 성능 개선을 할 수 있는 방법이 있을까요.

 

감사합니다.

 

by jkson [2016.07.11 11:53:45]

ms-sql 페이징으로 검색하면 많이 나올 것 같네요. 사용하시는 방법은 데이터 전체 데이터 건수가 많으면 비효율 적일 것 같구요. 1만건을 따로 관리하는 것은 관리상으로도 비효율 적이고 정규화 관점에서도 좋은 방법은 아닌 것 같습니다.


by 요릭 [2016.07.11 13:07:40]

답변 감사합니다. 참고하겠습니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입