Рекомендации по оптимизации

Чтобы отрисовывать чарты и селекторы, DataLens не хранит данные у себя, а отправляет запросы в БД источника. Сами запросы, а также любые вычисления (формулы в вычисляемых полях) выполняются на стороне источника данных. Поэтому, чтобы запросы и отрисовка полученных данных выполнялись быстрее, оптимизируйте данные в источнике.

Чтобы оптимизировать работу с данными, придерживайтесь следующих рекомендаций:

  1. Поработайте над структурой данных в источнике:

    • Старайтесь хранить данные в виде, не требующем сложных операций при запросе к ним. По возможности предварительно рассчитывайте данные на стороне БД. Это позволит минимизировать вычисления с помощью формул DataLens.

    • Явно объявляйте типы данных на стороне БД, чтобы избежать преобразований типов в больших таблицах. Например, не храните даты как текст.

    • Сортируйте таблицы по часто используемым измерениям — как правило, это даты.

    • При построении витрин с большим количеством строк разделяйте агрегированные данные и детальную информацию по разным таблицам и датасетам. Это позволит снизить нагрузку на источник при запросе данных.

    • Формируйте на стороне БД системы материализованных таблиц разной степени детализации для разных графиков и разных задач пользователя. Не используйте одну большую таблицу для всех задач:

      • Если в дашборде на большинстве графиков выводится сумма продаж только по месяцам, то нет необходимости хранить дневные данные. Можно агрегировать данные на стороне БД и материализовать таблицу.
      • Если для графиков необходима дневная разбивка, можно использовать таблицу с большей детализацией.

      При этом селекторы по датам можно настроить так, чтобы они фильтровали все графики одновременно.

    • Создавайте отдельные материализованные таблицы-справочники для селекторов, чтобы не выбирать уникальные значения для поля из больших таблиц при формировании списка значений для селекторов.

    • При использовании объединения данных выполняется подзапрос к полному набору полей таблицы. Такие операции потребляют много ресурсов и для большинства БД снизят скорость работы дашбордов. Поэтому для ускорения работы:

      • По возможности измените структуру таблиц так, чтобы сократить количество операций объединения данных в датасете.
      • По возможности делайте объединение данных на стороне БД и материализуйте таблицу.
    • Учитывайте особенности хранения и доступа к данным той БД, к которой подключаетесь. Например, ClickHouse не умеет использовать индексы по nullable-полям. Поэтому по возможности заменяйте NULL в таблицах на заполненные значения, если это не искажает расчеты.

  2. Сократите нагрузку на источник при работе с данными:

    • Старайтесь исключить из датасета поля, которые не используются при построении чартов.
    • Поля предпочтительнее добавлять на уровне датасета, а не чарта.
    • Заранее удаляйте из таблицы строки, которые точно не будут использоваться в дашборде, то есть делайте предфильтрацию. Для неколоночных БД также удаляйте ненужные столбцы.
    • По возможности не создавайте датасеты на основе SQL-запросов. В этом случае кастомный SQL-запрос будет выполняться каждый раз при обращении к БД.
    • Не выводите на графиках большое количество точек. В DataLens существуют ограничения, которые не позволят этого сделать, но важно помнить принцип: чем меньше точек, тем выше скорость работы.
  3. Оптимизируйте нагрузку на источник при организации дашборда:

    • Указывайте значения в селекторах на дашборде и используйте значения по умолчанию. По списку значений, выбранных в селекторе, формируется условие для фильтрации данных в чартах. Если не выбрано ни одно значение, возвращаются все данные. Это увеличивает нагрузку на источник.
    • Оптимизируйте структуру дашборда. Запросы к источнику выполняются для каждого чарта на текущей вкладке. При большом количестве чартов загрузка вкладки может занимать много времени. Расположите на одной вкладке минимальное количество чартов с учетом частоты их одновременного использования.
    • Используйте опцию Количество одновременно загружаемых виджетов в настройках дашборда.
  4. Учитывайте особенности работы сервиса:

    • Каждый раз при переходе между вкладками дашборда данные заново запрашиваются из источника. С одной стороны, пользователи всегда видят актуальные данные, с другой — это не рационально, если данные изменяются редко.
    • После выбора значений в селекторе каждый раз происходит обращение к источнику и обновление информации. При использовании на дашборде нескольких селекторов это увеличивает количество запросов к источнику.