R_CHAPTER기준으로 약 323개의 목록이 있는 책인데요.
웹뷰어로 오픈시 왼쪽차례가 표시되기까지 약 4초가량 소요가 되고, 이후에 오른쪽에 내용이 표시가 됩니다.
책을 쪼개서 두개로 운영할 수 없는 상황인지라 현재 상황에서 약간이라도 성능개선이 가능한 부분이 있는지 문의 드립니다.
DB는 오라클을 사용하고 있는데, R_CHAPTER에 R_BOOK_ID 로 조회시 FULL을 타기는 하나 조회성능에는 문제가 없는거 같구요.
(가능하면 인덱스도 추가해 볼까 생각중입니다.)
개발자도구에서 확인해 보니 /r/viewer/navigation/{book_id} 요부분에서 4초를 다 사용하는 거 같습니다.
(응답데이터는 약 234k정도)
쓰리래빗츠입니다.
먼저 자바 힙 메모리를 늘렸는지 확인 부탁드립니다. 그리고 R_CHAPTER
에 R_BOOK_ID
에는 인덱스가 있습니다.
해당 문서를 <도구 | 내보내기> 문서에서 내보내셔 보내주시면 테스트를 해보겠습니다. 그리고 편집 권한이 없는 사용자가 웹 뷰어를 볼 때는 캐시를 적용하고는 있습니다.
이와는 별개로 장의 숫자가 많은 것 같습니다. 여러 문서로 분리하는 것을 권장드립니다. PDF를 만들었을 때 몇 페이지인가요? 아무리 많아도 1,000 페이지를 넘기지 않는 것을 권장합니다.
감사합니다.
오라클 v$sql에서 잡은 쿼리로 플랜을 떠봤는데요. (첨부참조)
인덱스가 안타네요.
인덱스가 있는지 확인 부탁 드립니다. 그리고 R_CHAPTER
테이블이 작아 오라클 데이터베이스가 인덱스를 이용하지 않는 것 같습니다.
oracle10g 인데, 인덱스가 있네요. 플랜을 비교해보니 FULL로 조회하는게 성능이 더 좋게 나오는거 같습니다.
그렇다면, 조회한 데이터를 조립하는 과정중에서 delay가 있는 것이 아닌가 추측이 됩니다.
대량의 문자열 조립작업시 String 보다는 StringBuffer를 사용하는게 훨씬 성능이 좋은 것으로 알고 있습니다.
(알고 계실거 같지만, 참고로 ~)
그리고, 저희쪽 자료는 외부반출이 쉽지 않을거 같습니다.
혹시 자세한 로그를 보거나 디버깅 할수 있는 방법이 있나요 ?
자바 힙 메모리 설정 확인 부탁드립니다. 함께 PDF로 내보내기 했을 때의 페이지 숫자도 확인 부탁드립니다.
그리고 다음 쿼리에 대한 결과도 부탁드립니다.
SELECT COUNT(*) FROM R_CHAPTER WHERE R_BOOK_ID = '34541fe321724db3'
SELECT COUNT(*) FROM R_CHAPTER_ELEMENT WHERE R_CHAPTER_ID IN (SELECT R_ID FROM R_CHAPTER WHERE R_BOOK_ID = '34541fe321724db3')
SELECT COUNT(*) FROM R_CHAPTER_ELEMENT WHERE R_CHAPTER_ID IN (SELECT R_ID FROM R_CHAPTER WHERE R_BOOK_ID = '34541fe321724db3') AND R_TYPE IN ('heading1', 'heading2', 'heading3', 'heading4', 'heading5')
34541fe321724db3은 실제 문서의 UUID로 변경합니다.
감사합니다.
건수는 각각 344, 4154, 2020개입니다. pdf 장수는 1,039장이네요. (좀 많네요 흐미)