Кеширование

Кеш хранит в себе часто запрашиваемые данные и обеспечивает к ним быстрый доступ.

Примечание

Кеш DataLens не сохраняет исходные данные из источника, а только временно хранит результаты отдельных запросов.

DataLens кеширует результаты запроса пользователя, поэтому при изменении данных в источнике дашборды и чарты могут обновляться не сразу. Если на дашборде находятся виджеты, построенные на разных подключениях, частота обновления данных для них может различаться в зависимости от настроек времени жизни кеша каждого подключения. Максимальный объем данных в кеше — 512 МБ для каждого запроса.

Время жизни кеша для подключения по умолчанию — 300 секунд (5 минут). Пользователь может изменить время жизни кеша в настройках подключения до 86 400 секунд (1 сутки). Настройка доступна для подключений, перечисленных в блоке Базы данных раздела Подключение к источнику данных в DataLens On-premises. По ссылкам на странице вы можете посмотреть, как изменить настройку для каждого конкретного подключения.

Особенности использования кеша в DataLens

DataLens не выполняет запросы к данным в кеше. Из кеша возвращается только целиком результат запроса, который не используется при агрегации и в подзапросах. Результаты запросов, которые отличаются друг от друга, кешируются отдельно.

Если в запросе используется функция времени NOW(), то полученное из кеша значение этой функции может отличаться от реального на величину, не превышающую время жизни кеша.

При использовании RLS к запросу добавляется дополнительная фильтрация. Для каждого правила в RLS будет сгенерирован свой запрос, результаты которого кешируются отдельно. Одинаковые запросы для пользователей с одинаковыми правилами RLS используют один кеш.

DataLens кеширует результаты запросов, которые сформированы с помощью селекторов. Для уменьшения обращений к БД используйте в селекторах значения по умолчанию.

Условия сброса кеша

Кеш будет сброшен в следующих случаях:

  • Истечение времени жизни кеша.
  • Изменения любых параметров подключения, кроме названия.
  • Обновление полей в датасете.
  • Изменение SQL-запроса в источнике датасета.

Вопросы и ответы

Можно ли в инспекторе чартов отследить, что запрос пошел в кеш?

На данный момент такой возможности нет. Но если в запросе использовать функции определения времени (например, NOW()), можно увидеть разницу между текущим реальным временем и текущим временем, которое сохранено в кеше. По разнице можно понять, насколько актуальные данные в кеше.

Есть ли ограничение объема кеша для запроса или пользователя?

Для каждого запроса объем данных в кеше ограничен только объемом хранилища кеша — 512 МБ.
Ограничения объема кеша на пользователя или экземпляр DataLens нет.

Работает ли кеш в настройках выбора цвета в чарте?

Если в секцию Цвета добавить поле, которое уже участвует в построении чарта, то будет использован кеш.
Если в секцию Цвета добавить новое поле, будет выполнен новый запрос к данным в источнике.

ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc.