지금은 매 시간 매 순간마다 타임라인이 모든 글을 읽어들여서 추천이나 댓글 조건에 부합하는걸 가져오잖아요?
만약에 타임라인 모듈이 5분이라는 캐시시간을 가져서
한번 읽어들인 후 5분동안 쉬었다가 5분 후 다시 글을 읽어들이고 한다면 부하를 줄이는데에 큰 도움이 되겠죠?
그래서 메인 페이지에 있는 위젯도 캐시시간을 주는걸로 알고 있는데,,
이상 컴알못이 지금까지 하고있던 생각을 적어보았습니다,,,
지금은 매 시간 매 순간마다 타임라인이 모든 글을 읽어들여서 추천이나 댓글 조건에 부합하는걸 가져오잖아요?
만약에 타임라인 모듈이 5분이라는 캐시시간을 가져서
한번 읽어들인 후 5분동안 쉬었다가 5분 후 다시 글을 읽어들이고 한다면 부하를 줄이는데에 큰 도움이 되겠죠?
그래서 메인 페이지에 있는 위젯도 캐시시간을 주는걸로 알고 있는데,,
이상 컴알못이 지금까지 하고있던 생각을 적어보았습니다,,,
무시한다기보다는... 타임라인 모듈이 나왔을 당시에는 getDocumentList 트리거가 존재하지 않았으므로 게시판 모듈에서 기껏 불러와 놓은 글 목록을 폐기하고 다시 쿼리하는 방식으로 구현할 수밖에 없었습니다.
다시 쿼리하더라도 코어의 getDocumentList 함수를 파라미터만 바꾸어 다시 호출하는 방식이었다면 코어에서 제공하는 트리거를 통해 슈퍼캐시가 끼어들 수 있을 텐데, 타임라인 모듈은 2014년 말 기준으로 코어의 소스를 복붙+커스터마이징하여 별도로 구현했기 때문에 지난 5년여간 코어에서 개선된 사항이 반영되지 않습니다. 자체 제공하는 트리거가 없으니 슈퍼캐시에서 끼어들 수도 없고요.
다른 건 그대로 두고 COUNT(*) 쿼리 결과만 캐싱해도 부하가 절반 이상 줄어들 것입니다.
슈퍼캐시 모듈의 게시판 캐시 기능을 사용하면 COUNT(*) 쿼리를 줄여 주는 효과가 있는데, 타임라인은 이걸 무시하고 또다른 COUNT(*) 쿼리를 유발합니다. RXE에서 게시판 관련 부하의 60% 이상은 COUNT(*) 쿼리입니다.