2017-01-01 4 views
2

히스토리 노드에 약 10GB의 데이터가 저장되어있다. 그러나 해당 노드의 메모리 사용량은 약 2GB입니다.Druid : 메모리에있는 모든 히스토리 노드 데이터를 캐시하는 방법

select 쿼리를 실행하면 결과가 처음 30 초 이상 반환됩니다. 다음으로 그들은 (브로커 캐쉬로 인해) 2 위를 차지합니다.

제 관심은 처음으로 쿼리를 1 초로 줄이는 것입니다. 이러한 성능을 달성하려면 역사적인 노드가 모든 데이터를 메모리에 저장하는 것이 좋은 출발이라고 생각합니다.

질문 : 히스토리 노드가 메모리의 모든 데이터를 캐시하도록하려면 구성 매개 변수는 무엇입니까?

답변

0

Druid에는 데이터가 캐시되도록 강제하는 직접 메커니즘이 없습니다.이 문제를 해결하려면 시작시 메모리에 데이터 세그먼트를로드하는 일부 더미 쿼리를 실행 해보십시오. 드루이드 쿼리가 출시 될 때 활동하기 시작 캐시의 다양한 수준이있다 :

  • 캐시 브로커 노드에서 역사적 노드에서

    1. 캐시는
    2. 페이지 캐시

    먼저이 캐시는 구성 할 수는 요구 사항에 따라 켜고 끌 수 있지만 페이지 캐시는 기본 OS에 의해 완전히 제어됩니다. 당신의 설치 프로그램에서 당신은 많은 무료 메모리를 가지고 있기 때문에, 모든 세그먼트 데이터를 페이지 캐시에 가져 오는 모든 기록 세그먼트에 걸친 시작시에 더미 쿼리를 실행하고 나중에 쿼리를 실행하면 나중에 이점을 얻을 수 있습니다 .

    히스토리 및 브로커 캐시는 세그먼트의 전체 데이터를 캐시하지 않지만 각 세그먼트에 대한 쿼리 결과 만 캐시하므로 쿼리가 매우 동적이며 서로 다른 집계 및 필터가 필요할 경우 유용하지 않습니다. 시각.

  • +0

    좋은 대답과 좋은 해결 방법, 감사합니다! 결론적으로, 드루이드는이 목적에 가장 적합한 도구가 아닐 수도 있습니다. 정보마다 더 적절한 도구가 있는지 알고 있습니까? (나는 당신이 당신의 "큰 데이터"를 가지고있어 빠른 선택 쿼리를위한 준비된 메모리를 가질 수있다.) – DrWho3

    +0

    이것들은 내가 알고있는 in-memory 데이터베이스의 일부이다 : VoltDB와 Apache Geode. 개인적으로 Geode를 사용하지 않았기 때문에 성능에 대한 보증을 할 수는 없지만 설명서를 처음 읽으면서 큰 메모리 내부 데이터베이스를 사용할 수 있다고 믿게되었습니다. –