Background Image

FORUM

조회 수 288 추천 수 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 4278
3976 tomcat7 + cubrid 1 깽즈야 2012.07.27 90891
3975 원격접속이 안되네요????????? 2 Chris 2013.07.23 89528
3974 현재 연결은 원격 호스트에 의해 강제로 끊겼습니다 1 바람바람 2013.05.29 84860
3973 CUBRID 7.3 + zeroboard XE 관리자 로그인 에러 1 윤희서 2009.01.17 83638
3972 cub_master: Cannot bind local address... aborting.... Address already in use 4 박상현 2008.11.28 83556
3971 큐브리드 다운로더 오류 발생 5 file 차오이 2008.11.22 78469
3970 zeroboard XE 설치시 'database connect fail' error 4 윤희서 2009.01.16 78160
3969 Image 데이터타입 사용방법 3 AD 2008.11.25 73844
3968 clob 문의 1 김해영 2012.11.29 73006
3967 linux server 환경에서 php 버전은 어떤걸로 선택해야하는지. 1 거기 2008.11.30 66358
3966 델파이에서는 어떻게 사용할수 있을까요? 2 이상원 2008.11.29 65556
3965 if exists 조건 처리문? 2 콩이아부지 2013.03.06 63604
3964 update 쿼리를 이용한 시리얼 수정에 관하여 1 인경수 2008.11.27 63445
3963 큐브리드 2008 설치시 윈도우 서비스에 등록되지 않습니다. 3 file 진이 2008.11.22 63163
3962 CUBRID 7.3 + zeroboard XE 관리자 로그인 에러 1 윤희서 2009.01.17 62123
3961 큐브리드 maven repository 관련 문의 3 StoneHouse 2013.04.30 61467
3960 메니저에서 접속 안되는 오류 2 유나인 2013.08.16 61065
3959 .NET DB 제어를 위한 방법. 2 우페 2008.11.23 60874
3958 JDK가 두개 설치된 경우 선택적으로 JDK를 설정 할 수 있는 방법은 없는지요 1 GoFly 2008.11.28 60606
3957 데이터 이관시 소유자 변경 가능한가요??? 1 델몬트 2013.08.08 60059
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 199 Next
/ 199

Contact Cubrid

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