Background Image

FORUM

조회 수 290 추천 수 0 댓글 4
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

Result Set의 caching 과 관련한 질문입니다.

 

얼마전 저희측에서 지원하는 사이트에서 DB 응답 속도 지연 현상이 있어 응용프로그램측에 로그를 확인해보니 Temp Volume 메모리 부족 이었습니다.

 

단시간에 대량의 join, sub query 등이 있었던 것은 사실이므로 해당 문제가 발생할 가능성은 있을수 있다고 생각합니다만.

 

단시간에 쏟아진 Query가 조건절이 변한 것도 아니고 쿼리 대상 테이블에 insert/update/delete 작업이 없었던 상황이라 Result Set Caching이 동작했다면 Temp Volume에 쌓일 일이 없어야 하지 않나 싶어 질문드립니다.

(DB의 로그나 WAS의 로그를 봐도 단일 게시물에 대한 조회며 조회수 Update는 2분단위 batch로 동작합니다.)

 

2009년 6월 경에 작성된 아래 기술 문서에 의하면..

 

https://www.cubrid.com/data_room/3795765

 

효율적인 게시판 사용을 위해 요약 바로 위쪽에 아래와 같은 조언이 있습니다.

 

Query Result Cache 사용하기

질의 결과 캐시(Query Result Cache)는 질의 결과를 저장해 두고 질의 조건까지 동일한 질의문이 입력될 경우, 모든 처리 과정을 생략하고 저장했던 질의 결과를 응용에게 전달하는 기능이다. 대부분의 경우 질의에 포함된 테이블의 내용이 변경이 되면 저장된 내용을 사용할 수 없기 때문에, 거의 변경이 없는 테이블에 접근하는 질의에 대해서만 질의 결과 캐시를 사용해야 하며, 그렇지 않으면 오히려 질의 결과 캐시를 사용하는 오버헤드만 증가하게 된다. 현재 이 기능은 PostgreSQL은 지원하지 않고, CUBRID, MySQL는 제공한다. 설정 방법은 CUBRID의 경우에는 cubrid.conf에 max_query_cache_entries, query_cache_mode, query_cache_size_in_pages 값들을 설정해 주면 되고, MySQL의 경우에는 my.cnf에 query_cache_limit, query_cache_min_res_unit, query_cache_size, query_cache_type 값들을 설정해 주면 된다.

 

장애가 발생한 사이트의 DB(큐브리드 9.3) 설정 정보상에는 위와 같은 설정들이 없어서 레퍼런스를 찾고 있습니다.

 

큐브리드 9.3이 Release 된 시점은 저글이 작성된 2년후 정도라 설정이 있을 거라고 생각하는데 매뉴얼상에 해당 설정과 관련한 설명이 보이지 않습니다.

 

11.0대 버전에는 해당 설정에 대한 설명이 있구요.

 

9.3에서 위의 문제를 해결하려면 어떻게 설정하면 될까요?

  • ?
    김창휘 2021.04.12 14:13
    안녕하세요.

    먼저 Temp volume 용도에 대해서 알려드리면 아래와 같습니다.
    https://www.cubrid.org/manual/ko/10.2/intro.html?highlight=temp%20volume

    - SELECT 문 등 결과가 생성되는 질의 ( From절의 In-Line View 처리 결과를 다른 In-Line View 또는 Permanent table와 조인수행하기 전 중간결과 임시 저장)
    - GROUP BY 나 ORDER BY 가 포함된 질의 (정렬작업 수행 시 임시 작업공간)
    - 부질의(subquery)가 포함된 질의 ( subquery 결과 임시 저장)
    - 정렬 병합(sort-merge) 조인이 수행되는 질의 ( Merge Join 수행 전 각 조인 테이블(또는 In-Line View) 정렬작업 임시 저장공간, 조인되는 대상에 대해서 사전 정렬작업 진행)
    - CREATE INDEX 문이 포함된 질의 ( 인덱스 생성 과정에서 정렬작업 수행 시 임시 작업공간)

    위에서도 언급이 되었듯이 임시 저장공간은 주로 데이터 조회 시 사용되는 공간이고, cubrid.conf의 max_plan_cache_entries는 질의실행 계획을(Oracle의 Library Cache와 유사) 재사용 할 수 있도록 하는 기능에 대한 설정(개수) 입니다.

    일단, 문제가 되었던 시점의 상황 점검과 함께 해당 시점에 수행 되었던 SQL에 대해서 성능 점검을 받아 보시는 것이 좋을 듯 합니다.

    감사합니다.
  • ?
    imwondol 2021.04.12 14:53

    일단 질문은 max_plan_cache_entries에 대한 것이 아니라 max_query_cache_entries에 대한 것입니다.

    https://www.cubrid.org/manual/ko/11.0/admin/config.html#plan-cache-parameters

    Temp Volume의 용도에 관해서는 알고 있습니다만..
    웹로그의 확인 결과로는 집중되었던 Query의 조건절 등이 전혀 변하지 않았기 때문에 Cache를 탔다면 [모든 처리 과정을 생략하고 저장했던 질의 결과를 응용에게 전달하는 기능이다.]라는 설명대로 (Temp Volume 사용 없이) 메모리에 저장되었던 값이 사용되므로 Temp Volume 문제가 아예 첨부터 발생하지 않았을수도 있지 않을까 짐작하고 있습니다.

    위에 매뉴얼은 11 버전입니다. 9.3 매뉴얼에서는 max_query_cache_entries와 관련해서 찾지를 못해서..

    만약 9.3에 해당 기능이 없다면 업그레이드 등을 고려해봐야겠죠.

     

    사실 이게 2년전쯤 오라클에서 큐브리드로 변경한 건데... 오라클 사용시에는 6만여건의 게시물 조회가 단기간에 들어왔을때 장애상황까지는 가지 않았는데 이번에 1만 6천여건 정도의 게시물 조회로 장애 상황으로 갔던거라 SQL의 튜닝은 크게 고려하지 않고 있습니다. 

  • ?
    오명환 2021.04.12 21:06
    query result cache (max_query_cache_entries 설정값)의 기능은 8.X 에서만 지원했던 기능으로, 9.X ~ 10.X version에서 지원되지 않습니다.
    11.0부터 리펙토링 작업과 기능 개선을 통해 해당 기능을 다시 사용할 수 있게 제공하였습니다.

    문의하신 9.3 버전에서는 해당 기능을 사용할 수 없습니다.
  • ?
    imwondol 2021.04.13 08:56
    여태까지 들었던 답변중에 가장 속시원하고 명쾌한 답변이네요. 감사합니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4443
3987 cubrid count 속 2 kanin 2024.04.19 10
3986 cubrid 10.1 데이터 덮어쓰기 질문입니다. 1 ysk96 2024.04.18 17
3985 ACTION 명령어? 예약어? 1 투투투투기기 2024.04.17 16
3984 sql 구문 사용시 데이터 타입 decimal일 경우 1 투투투투기기 2024.04.11 26
3983 Regexp_count 4 SEO 2024.04.09 56
3982 큐브리드 메모리 오류 관련 질문 2 file 뚜벅뚜벅 2024.04.09 57
3981 큐브리드 실행이 안되는 이슈 1 file 최현욱 2024.04.09 36
3980 unloaddb & loaddb 관련 질문이 있습니다. 1 543534512 2024.04.06 43
3979 mac m1 다운로드 오류 1 file 혜주냉면 2024.04.05 40
3978 list 함수로 만든 sequence type을 varchar로 변환 문의 1 플레이어블 2024.04.04 35
3977 DECODE, CASE WHEN 사용법 문의 2 핑크팬더 2024.04.03 53
3976 schema 파일 loaddb - 스키마 정보 중복오류 문의 4 daay 2024.03.21 88
3975 object to string 4 네오랜덤 2024.03.20 67
3974 mysql로 DB연동 문의 2 연동테스트용 2024.03.20 68
3973 특정DB만 접근 시간이 현저하게 오래 걸리는 문제 1 file 그로구 2024.03.20 58
3972 jdbc 연동시의 charset 강제 변경 방법 1 file gwak 2024.03.14 56
3971 도커로 HA환경 구성 테스트중 hb start.. 1 wodud0170 2024.03.12 62
3970 이중화 관련 문의드립니다. 1 adqwdqwd123412 2024.03.12 66
3969 큐브리드 마스터 복제 관련 문의 드립니다. 2 이지혜 2024.03.11 60
3968 큐브리드 다운로드 에러 1 file 나래아빠 2024.03.08 84
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales