Друид: как он использует кеш и кеш страниц ОС? - PullRequest
0 голосов
/ 02 июля 2018

Я наблюдаю, что производительность запросов Друида может выиграть от предыдущих запросов. Таким образом, я пытаюсь понять причины. Я знаю, что Друид использует кеш (я использую кеш в брокере), но этот кеш просто хранит результаты запросов на сегмент (верно?). Однако я заметил, что если последующие запросы используют одни и те же сегменты, производительность улучшается.

Пример:

  1. Выберите сумму (метрика), dimteste2, dimteste3 из таблицы x, где dimteste = группа 'x', по dimteste2, dimteste3 -> 2 секунды
  2. Выберите сумму (метрика), dimteste2, dimteste3 из таблицы x, где dimteste3 = группа 'y', по dimteste2, dimteste3 -> 0,5 секунд

Я искал и обнаружил, что такого поведения можно добиться с помощью кэша страниц ОС. Основываясь на моих исследованиях, я думаю, что Druid при первом запросе к источнику данных загружает необходимые сегменты в память (кэш страницы ОС). И сегменты могут быть прочитаны быстрее в следующих запросах.

Я прав? Я заглянул в документацию Друида и не смог найти ничего полезного.

Не могли бы вы помочь мне объяснить это удивительное поведение?

С уважением,

Хосе Коррейя

1 Ответ

0 голосов
/ 02 июля 2018

Друид использует кэширование для улучшения производительности на разных уровнях. На уровне сегмента по истории и по запросу друида на брокере. Чем больше памяти вы отдаете, тем быстрее он работает.

Ниже приведена документация по кешированию -

Кэширование запросов

Друид поддерживает кеширование результатов запроса через кеш LRU. Результаты сохраняются для каждого сегмента вместе с параметрами данного запроса. Это позволяет Druid возвращать окончательные результаты, основываясь частично на результатах сегментов в кэше и частично на результатах сегментов при сканировании исторических / реальных сегментов.

Результаты сегмента могут быть сохранены в локальном кэше кучи или во внешнем распределенном хранилище ключей / значений. Кэширование сегментированных запросов может быть включено как на уровне истории, так и на уровне брокера (не рекомендуется включать кэширование на обоих).

Кэширование запросов у брокеров

Включение кэширования в брокере может дать более быстрые результаты, чем если бы кэширование запросов было включено в Historicals для небольших кластеров. Это рекомендуемая настройка для небольших производственных кластеров (<20 серверов). Обратите внимание, что при включенном кэшировании в брокере результаты из хронологических данных возвращаются для каждого сегмента, и исторические данные не смогут выполнять локальное объединение результатов. </p>

Кэширование запросов по истории

Более крупные производственные кластеры должны включать кэширование только в Historicals, чтобы избежать необходимости использовать Brokers для объединения всех результатов запроса. Включение кэширования в Historicals вместо Brokers позволяет Historicals самостоятельно объединять локальные результаты и снижает нагрузку на Brokers.

Брокер Druid ничего не делает напрямую в кеше страницы ОС, если ОС предоставляет доступ к виртуальной памяти, а не по памяти Требования к куче выделяются.

...