포럼
xe 쿼리 기본 게시판 및 page 관련 쿼리 심각합니다.
2012.02.27 08:28
최근에 슬로우 쿼리로 골머리 썩고 있는데요..
몇가지 테스트중 아주 이상한 괘현상을 겪고 있습니다.
select * from documents where list_order <=25-------- and module_srl = xxxx limit 300000 ,20;
이라는 단순한 쿼리를 이용한 결과에 이상한 점을 발견했습니다.
분명 index를 타고 조회하는 것을 확인하였는데...
신기한것은 index를 지워버리고 다시 쿼리했을때 속도가 훨씬더 좋아 지는 기현상이 발생해버렸습니다.
어떻게 받아 들어야 할까요????
limit 이 1~4 00000 일경우 보통 2~5 초사이
일반적인 hosting 사이트에서 이런 결과를 나타내는데
인덱스를 지워주고 난후 오히려 둘다 1초때 안으로 들어 오는 기현상이 생기네요...
지극히 주관 적인 생각인데....
다른 데이터로 변경후 test를 하였을당시 평균적으로 0.03 초 안으로 들어오는것과 정말로 비교되는데...
아무래도 xe 자체 데이터 베이스 문제가 있는건 아닐까 추측을 해봅니다.
마지막으로 limit을 이용한 페이징을 하기전 미리 이전 제로보드와 같은 디비전을 이용하는것이 어떨까요...
게시판안에 1만건의 글자는 분명 많은것이 아니라고 생각됩니다.
php 프로그램이 느린것보다 가장 심각한것이 바로 쿼리 부분이 아닐까요????
댓글 2
-
퍼니엑스이
2012.02.27 12:22
-
푸하라
2012.02.27 13:07
일반 hosting 경우 대략 만건의 게시물이 올라왔을경우 심각한 문제를 일으킬수 있습니다.
xpress 게시판의 경우 처음 가기와 끝으로 가기 버튼이 있는데 성능을 느리게 만드는 주범이더군요..
거기다가 로봇이 자주들어와서 맨끝 개시물을 검색을 자주 할경우 서버 다운현상은 수치가 높아저오네요...
일반적으로 사용하기 좋은 상태는 절대로 1000 건의 게시물이 넘어가지 않는 한도내에서 서비스 사용하길 적극 권장해야 되는것 아닌가 생각이 듭니다.
밑에 있는 쿼리는 일반 게시판에서 사용되는 쿼리입니다. 사용자들이 4명중 1명은 이상하게도 눌러보네요.
SELECT `document_srl`, `title`, `readed_count`, `regdate`, `last_update`, `status`, `content`, `comment_count` FROM `documents` as `documents` WHERE ( `module_srl` in () and `status` in ('PUBLIC') ) and `list_order` <= 2100000000 ORDER BY `list_order` asc LIMIT 29700, 10
제로보드와 같은 페이징을 택하지 않은 것은 XE가 게시판 뿐 아니라 다양한 용도로 사용될 수 있도록 고려되어 설계된 듯합니다.
문서(document) 모듈이 게시물뿐만 아니라 다양한 콘텐츠를 담을 수 있도록 한 것까지 고려해서 작명한 것이 아닌가? 추측해봅니다.
MYSQL에서 LIMIT가 느린것은 사실입니다. 하지만 구조를 바꾸는 것도 쉬운게 아니죠.
속도 개선을 위해 DB 구조를 바꿔야하는데 기존에 등록된 글을 update하는 과정에서 문제가 발생할 수 있습니다.
오래전 XE 1.2 -> XE 1.3 하는 과정에서 documents 테이블 구조가 크게 변경되었는데
그 때 업데이트했다가 낭패보신 분이 많은 것으로 기억합니다.
개인적으로 개발해서 사용하는 프로그램이라면 큰 걱정없겠지만 많은 분들이 사용하는 만큼 신중해야 합니다.