Как оптимизировать скорость загрузки дашборда?
Хорошо сделанный дашборд – это не только про полезные графики и таблицы. Хороший дашборд должен грузиться быстро, и уж тем более не падать с ошибкой из-за долгого ожидания ответа от базы.
Что же делать, если все-таки дашборд работает не идеально? Как исправить ситуацию?
Оптимизируйте SQL-запросы
На SQL одну и ту же задачу можно решить разными способами. Если запрос выполняется долго, то это повод его попробовать сделать по другому, и подобрать самый быстрый вариант.
Откажитесь от представлений (но не цирковых)
Зачастую дашборды подключают к заранее подготовленным представлениям (view) или используют SQL-запрос непосредственно в дашборде. В таком случае все расчеты выполняются на лету при обращении к дашборду. Переход на материализованные представления и таблицы даст существенное ускорение. В таких таблицах все нужные показатели заранее посчитаны и разложены по колонкам.
Добавьте индексы и партиции
Индексы и партицирование в таблицах упорядочивают хранение данных. Тем самым поиск по таблице существенно ускоряется. Важно подходить разумно к использованию индексов, и добавлять их только на часто используемые колонки таблицы. То же самое касается и партицирования.
Подготовьте витрины данных
Данные в БД можно условно разделить на «сырые» и «агрегированные». Сырые – это не обработанные данные, которые залиты в БД из стороннего источника. Обычно в таких таблицах очень много данных (миллионы или миллиарды строк). Из-за этого дашборд, подключенный к таблице с сырыми данными будет заметно долго грузится. Лучше использовать заранее подготовленные таблицы с агрегированными данными (по другому их называют витринами данных). Пользователи дашбордов вам скажут за это спасибо )
Перейдите на аналитическую БД
Если дашборд подключен к транзакционной базе (PostgreSQL, MySQL и т.п.) или к Google Таблицам, то переход на аналитическую базу данных (например, ClickHouse или Google BigQuery) даст существенный прирост скорости дашборда.
Увеличьте ресурсы БД и сервера
Бывает так, что все что можно, в БД уже ускорено – витрины данных сделаны, запросы оптимизированы, индексы стоят, но дашборд все равно падает с ошибкой. Тогда стоит обратить внимание на ограничение сервера и настройки БД. Возможно, не хватает оперативной памяти, места на диске или кол-ва доступных подключений к базе.
Уменьшите период фильтрации
Так же обратите внимание на фильтрацию в самом дашборде. Добавлен ли у вас фильтр (селектор) по периоду? На сколько там большой диапазон выбран? Сократите его до минимально необходимого, а пользователи сами потом выберут нужный период. Тем самым снизится нагрузка на базу, повысится скорость загрузки дашборда, а в случае с Google BigQuery еще и затраты уменьшатся.
Упростите дашборд
Кол-во визуализаций и кол-во метрик в них может также существенно замедлять загрузку. Подумайте над разделением вкладки дашборда на несколько разных. Предложите пользователям разделить множество метрик в общей таблице на разные (возможно, что-то уже совсем не актуально). Зачастую дольше всего загружаются сводные таблицы – обсудите с пользователями переход на плоскую таблицу вместо сводной. Все это также поможет ускорить дашборд.
У меня большой опыт в оптимизации дашбордов и расходов на аналитическое хранилище. Обращайтесь! Я буду рад вам помочь.
Подписывайтесь на мой телеграм-канал https://t.me/online_data_analytics – обещаю каждую неделю множество полезных советов по дашбордам, ETL и DWH.