Друид: как он использует кеш и кеш страниц ОС?

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

Пример:

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

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

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

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

С наилучшими пожеланиями,

Хосе Коррейя

1 ответ

Решение

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам