질문/조언질답게시판
Extra Form
PHP PHP 7.4
CMS Rhymix 2.x

또 비슷한 질문을 하게돼서 죄송합니다.

확장변수로 검색할때 속도가 아주 느린 문제를 질문 드렸었는데요.

디버깅 한 결과물입니다.

 

Slow Queries

============

01. SELECT COUNT(*) AS `count` FROM (SELECT DISTINCT `documents`.*, `extra_sort`.`value` FROM `xe_documents` AS `documents`, `xe_document_extra_vars` AS `extra_vars`, `xe_document_extra_vars` AS `extra_sort` WHERE `extra_vars`.`value` LIKE ? AND `extra_vars`.`var_idx` = ? AND `documents`.`document_srl` = `extra_vars`.`document_srl` AND `documents`.`document_srl` = `extra_sort`.`document_srl` AND `documents`.`module_srl` IN (?) AND `documents`.`status` IN (?, ?)) AS `subquery`

    - Caller:      modules/document/document.model.php line 265 (documentModel::getDocumentList)

    - Connection:  master

    - Query ID:    document.getDocumentListWithExtraVars (count)

    - Query Time:  37.8223 sec

    - Result:      success

 

저같은 경우 이게 단순히 검색속도가 문제가 아니고, 검색의 결과물을 메뉴로 빼놓은거라 신경을 안 쓸수가 없네요.

무슨 방법이 있을지요?

 

  • profile
    어제 여쭤보았는데 명확한 답을 주시지 않아서 다시 여쭤봅니다. 이전 버전(2.0.5)에서는 결과도 정상적으로 나오고 빨랐나요? 아니면 빠르긴 한데 결과가 누락되거나 2페이지 이후가 안 나오거나 했나요? 불러와야 하는 데이터를 안 불러오는 버그가 있었기에, 그걸 정상적으로 불러오는 과정에서 어쩔 수 없이 느려지는 건지 아니면 또다른 원인이 있는지 알기 위해 구체적으로 여쭤보는 것입니다.

    해당 게시판의 1) 전체 게시물 수, 2) 확장변수 검색으로 나오는 결과 수는 각각 몇 개쯤 되는지요?

    혹시 정렬도 확장변수로 하고 계신가요? 아니면 확장변수는 검색에만 사용하고 정렬은 글번호순(시간순)인가요?
  • profile ?
    2.05 버전에서 결과 정상적으로 나오고, 속도도 (빠르다고 할수는 없고 약간 딜레이가 있지만) 3초로 잡아놓은 슬로우쿼리에 잡히지는 않는 정도입니다. 2.07에서도 결과는 정상적으로 나옵니다.
    전체게시물 수는 62,000개 정도입니다. 검색 결과수는 50프로 정도라고 보시면 됩니다.
    (이해하기 쉽게 링크 달겠습니다. https://www.filmmakers.co.kr/actorsAudition 여기서 '남자' '여자' 검색할때의 상황입니다. 지금은 2.05 버전입니다)
    기본정렬은 글번호 입니다.
    git pull로 업데이트하고 있습니다.
  • ? profile
    modules/document/queries/getDocumentListWithExtraVars.xml 에서
    <columns distinct="distinct"> 이 부분을
    <columns> 로 바꿨을 때 속도 차이 또는 검색 결과의 차이가 있는지 확인 부탁드립니다.
  • profile ?
    네 해봤는데... 서버가 멈춰버릴 정도로;;;
    한 2분 기다리다가 결국 결과는 보지 못하고 아파치 리스타트하고 2.05로 되돌렸습니다.
    (운영중인 사이트여서요)
    이게 저만 그런거고 다른 분들은 이상이 없나요?
  • ? profile

    비슷하게 몇만 건의 게시물이 쌓여 있는 다른 사이트에서 확장변수로 검색해 보았는데 0.5초 정도 걸리더군요. JOIN이 들어가는 쿼리인데다가 확장변수 검색은 풀 테이블 스캔이라;;; 데이터가 많아질수록 느려질 수밖에 없긴 합니다만, 서버 세팅이나 DB 버전 등에 따라 큰 차이가 나는 모양입니다.

     

    메뉴에 들어갈 정도로 검색 빈도가 높은 확장변수라면 그냥 카테고리로 처리하시는 것을 추천합니다. 쿼리 구조를 바꿔서 어느 정도 개선할 수는 있지만, 확장변수 테이블 구조상 근본적인 해결은 어려울 것 같습니다.

  • profile ?
    네 세심한 조언 감사합니다 :)
    연구해보도록 하겠습니다.