От 2 минут до 3 секунд: что я проверил, прежде чем винить BI

Сегодня расскажу про один кейс, который был у меня в работе. Отчёт, который грузится 2 минуты — это проблема. А дашборд, который иногда падает, когда все открывают его одновременно — проблема ещё больше. Витрина на SQL открывалась около 2 минут, а на пиковой нагрузке весь отчёт мог упасть. Самая простая реакция — обвинить BI. Но я решил сначала проверить сам SQL-запрос. EXPLAIN очень помог мне с этим. Узким местом оказались JOIN’ы, поэтому я переписал запрос, добавил оконные функции. А ещё добавил индексы на поля, которые использовались в фильтрации на дашборде.

Теперь сама витрина грузится примерно за 3 секунды, а падения дашборда на пиковой нагрузке исчезли. Никакой магии тут нет. Прежде чем трогать настройки BI, я бы проверил три вещи: - сколько в запросе JOIN’ов и в каком порядке они идут - могут ли фильтры использовать индекс - что запрос считает повторно, хотя мог бы посчитать один раз

А где вы находили узкое место, которого не ожидали? #SQL #BI #DataAnalytics

От 2 минут до 3 секунд: что я проверил, прежде чем винить BI | Сетка — социальная сеть от hh.ru