Рекомендации по оптимизации
Чтобы отрисовывать чарты и селекторы, DataLens не хранит данные у себя, а отправляет запросы в БД источника. Сами запросы, а также любые вычисления (формулы в вычисляемых полях) выполняются на стороне источника данных. Поэтому, чтобы запросы и отрисовка полученных данных выполнялись быстрее, оптимизируйте данные в источнике.
Чтобы оптимизировать работу с данными, придерживайтесь следующих рекомендаций:
-
Поработайте над структурой данных в источнике:
-
Старайтесь хранить данные в виде, не требующем сложных операций при запросе к ним. По возможности предварительно рассчитывайте данные на стороне БД. Это позволит минимизировать вычисления с помощью формул DataLens.
-
Явно объявляйте типы данных на стороне БД, чтобы избежать преобразований типов в больших таблицах. Например, не храните даты как текст.
-
Сортируйте таблицы по часто используемым измерениям — как правило, это даты.
-
При построении витрин с большим количеством строк разделяйте агрегированные данные и детальную информацию по разным таблицам и датасетам. Это позволит снизить нагрузку на источник при запросе данных.
-
Формируйте на стороне БД системы материализованных таблиц разной степени детализации для разных графиков и разных задач пользователя. Не используйте одну большую таблицу для всех задач:
- Если в дашборде на большинстве графиков выводится сумма продаж только по месяцам, то нет необходимости хранить дневные данные. Можно агрегировать данные на стороне БД и материализовать таблицу.
- Если для графиков необходима дневная разбивка, можно использовать таблицу с большей детализацией.
При этом селекторы по датам можно настроить так, чтобы они фильтровали все графики одновременно.
-
Создавайте отдельные материализованные таблицы-справочники для селекторов, чтобы не выбирать уникальные значения для поля из больших таблиц при формировании списка значений для селекторов.
-
При использовании объединения данных выполняется подзапрос к полному набору полей таблицы. Такие операции потребляют много ресурсов и для большинства БД снизят скорость работы дашбордов. Поэтому для ускорения работы:
- По возможности измените структуру таблиц так, чтобы сократить количество операций объединения данных в датасете.
- По возможности делайте объединение данных на стороне БД и материализуйте таблицу.
-
Учитывайте особенности хранения и доступа к данным той БД, к которой подключаетесь. Например, ClickHouse® не умеет использовать индексы по nullable-полям. Поэтому по возможности заменяйте
NULL
в таблицах на заполненные значения, если это не искажает расчеты.
-
-
Сократите нагрузку на источник при работе с данными:
- Старайтесь исключить из датасета поля, которые не используются при построении чартов.
- Поля предпочтительнее добавлять на уровне датасета, а не чарта.
- Заранее удаляйте из таблицы строки, которые точно не будут использоваться в дашборде, то есть делайте предфильтрацию. Для неколоночных БД также удаляйте ненужные столбцы.
- По возможности не создавайте датасеты на основе SQL-запросов. В этом случае кастомный SQL-запрос будет выполняться каждый раз при обращении к БД.
- Не выводите на графиках большое количество точек. В DataLens существуют ограничения, которые не позволят этого сделать, но важно помнить принцип: чем меньше точек, тем выше скорость работы.
-
Оптимизируйте нагрузку на источник при организации дашборда:
- Указывайте значения в селекторах на дашборде и используйте значения по умолчанию. По списку значений, выбранных в селекторе, формируется условие для фильтрации данных в чартах. Если не выбрано ни одно значение, возвращаются все данные. Это увеличивает нагрузку на источник.
- Оптимизируйте структуру дашборда. Запросы к источнику выполняются для каждого чарта на текущей вкладке. При большом количестве чартов загрузка вкладки может занимать много времени. Расположите на одной вкладке минимальное количество чартов с учетом частоты их одновременного использования.
- Используйте опцию Количество одновременно загружаемых виджетов в настройках дашборда.
-
Учитывайте особенности работы сервиса:
- Каждый раз при переходе между вкладками дашборда данные заново запрашиваются из источника. С одной стороны, пользователи всегда видят актуальные данные, с другой — это не рационально, если данные изменяются редко.
- После выбора значений в селекторе каждый раз происходит обращение к источнику и обновление информации. При использовании на дашборде нескольких селекторов это увеличивает количество запросов к источнику.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc.