Background Image

FORUM

조회 수 133 추천 수 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 1445
3413 pdo_cubrid 실행이 안됩니다. 6 file smilena 2021.04.27 184
3412 where 절 IN 구문에 잘못된 서브쿼리 사용 시의 비정상 동작 문의 1 Raven 2021.04.23 78
3411 _cubrid.InterfaceError: (-20002, 'ERROR: CCI, -20002, Invalid connection handle') 4 beatb 2021.04.22 108
3410 큐브리드 백업 4 먹고래 2021.04.21 117
3409 매일 1억건의 데이터를 지울수 있는 방법이 필요합니다 14 file ysh 2021.04.20 250
3408 안드로이드 개발 중, 큐브리드 접속 시 VerifyError가 출력되며 에뮬레이터가 종료되어버립니다. 2 롤롤 2021.04.19 82
3407 큐브리드 설치 이후 FATAL ERROR 1 김둥둥 2021.04.16 83
3406 CUBRID. 데이터 시각화 툴 호환 가능 여부 2 mqnic 2021.04.15 92
3405 큐브리드 시작시 오류 문의 드립니다. 6 file jisu5689 2021.04.15 115
» 큐브리드 9.3 버전 Result Set Caching 설정 관련 질문 4 imwondol 2021.04.12 133
3403 리눅스에 큐브리드 설치 관련 질문 입니다. 1 file 하인츠링게 2021.04.09 87
3402 An internal error occurred during: "Fetching children of <DB명>". java.lang.NullPointerException 에러 4 ysh 2021.04.06 118
3401 아카이브 삭제 명령어 문의 드립니다. 1 Philip Park 2021.04.06 82
3400 데이터 삭제 후 인써써트시 한번은 정상 동작 두번째에서 아래의 오류가 발생합니다 1 htoh 2021.04.06 81
3399 큐브리드 관련 질문입니다. 1 슈웁 2021.04.01 82
3398 trigger 에서 오라클 처럼 Exception 처리가 가능한가요? 2 ymshim 2021.03.29 120
3397 큐브리드 MERGE INTO USING ( SELECT DB_ROOT ) 관련 질문 드립니다. 1 MSG 2021.03.25 130
3396 FOREIGN KEY 오류관련해서 문의 드립니다. 1 미샤클로렌 2021.03.23 136
3395 컬럼상 콤마 삭제 질문드립니다. 5 테스형2 2021.03.19 111
3394 큐브리드 9.3) 터미널을 이용하여 큐브리드 DB ubloaddb시 object 파일 깨짐 현상 3 file 솨솨솨 2021.03.18 129
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 175 Next
/ 175

Contact Cubrid

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