게시판 조회속도 향상을 위해 .. 파티셔닝을 해보면 나을까요? 0 2 1,394

by jeeta [2009.05.22 17:25:58]


게시판 마스터, 디테일 ... 등의 테이블이 있고

디테일에 70만건 정도가 있습니다.  게시물 한건당 디테일 한건이구요. 글 내용 컬럼 데이터 타입은 varchar2(4000) 입니다.

 

select * from 디테일 where rownum < 10000 => 0.7 초 정도 수행

3개 컬럼 으로 구성된 인덱스 태워서 1만건 정도 조회시 => 1초 정도 수행됩니다

 

파티셔닝 잡을만한 컬럼이 있긴한거 같은데...파티셔닝을 하면... 속도가 대폭?? 개선이 될까요?

 

 

 

by 무우다리 [2009.05.22 18:02:11]
통합게시판을 만들면서 리스트 파티션을 도입해 보긴 했습니다만, 질문하신 것처럼 하나의 게시판을 여러 파티션으로 분할하는 것은 고려해보지 않았네요.
당장 생각하기엔 무엇을 기준으로 파티션을 분할할 것인가도 잘 떠오르지 않네요.
파티션이든 클러스터든 중점 중 하나는 클러스터링 팩터를 높여서 비슷한 자료를 모아놓고 하드디스크의 동작시간을 물리적으로 줄이려는 것입니다. 인덱스를 통해 테이블 블럭에 접근했을 때 비슷한 자료가 같은 블럭안에 있다면 테이블 블럭에 대한 Physical Random I/O를 줄일 수 있겠죠.
게시판 같은 경우 테이블 블럭을 소모하는 주범은 글내용에 해당하는 컬럼입니다. 게시글 목록을 출력하기 위해 테이블 블럭을 읽어보면 블럭의 대부분(60~70%)은 목록을 만드는 데 필요없는 글내용이 점유하고 있기 일쑤죠. 때문에 하나의 블럭에서 추출되는 Row가 몇개 안된다는 점이 주요 고민거리입니다.
이 부분에 대한 고민없이 단순히 파티션을 분할하는 것은 Physical I/O에 대한 개선효과가 미미할 것 같네요.

by 현 [2009.05.23 00:44:11]
파티셔닝을 한다고 속도가 대폭 개선되지는 않을 겁니다.
오히려 조회시엔 더 늦어 질수도 있습니다..
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입