Методы оптимизации

Автоматизация конвейеров данных в Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Больше вычислений — не всегда решение

bigger_house

Автоматизация конвейеров данных в Snowflake

Четыре подхода

nanobanana: half: Четыре геометрических значка инструментов в сетке два на два, плоский абстрактный дизайн, тёмно-синий и зелёный цвета DataCamp, белый фон, без текста, минималистичный

  • Search Optimization — поиск по равенству на идентификаторах с высокой кардинальностью
  • Query Acceleration Service — непредсказуемые тяжёлые сканирования
  • Automatic Clustering — повторяющиеся фильтры диапазонов на одних столбцах
  • Materialized Views — частые дорогостоящие агрегации
Автоматизация конвейеров данных в Snowflake

Оптимизация поиска

  • Ускоряет запросы, возвращающие небольшое число строк из большой таблицы
  • Создаёт постоянный путь доступа; часть микро-разделов можно пропустить
  • Затраты на хранение и вычисления для поддержания пути доступа
ALTER TABLE logistics.shipments
  ADD SEARCH OPTIMIZATION;
1 docs.snowflake.com/en/user-guide/search-optimization-service
Автоматизация конвейеров данных в Snowflake

Служба ускорения запросов

  • Обрабатывает большие непредсказуемые сканирования
  • Поддерживает SELECT, INSERT, CREATE TABLE AS SELECT, COPY INTO
  • QUERY_ACCELERATION_MAX_SCALE_FACTOR: по умолчанию 8; 0 — без ограничений, не отключает
ALTER WAREHOUSE harbr_wh SET
  ENABLE_QUERY_ACCELERATION = TRUE
  QUERY_ACCELERATION_MAX_SCALE_FACTOR 
  = 8;
1 docs.snowflake.com/en/user-guide/query-acceleration-service
Автоматизация конвейеров данных в Snowflake

Автоматическая кластеризация

  • Для таблиц, где одни и те же столбцы фильтрации встречаются в большинстве запросов
  • Snowflake перестраивает микро-разделы для более эффективного пропуска данных
  • Фоновое обслуживание — хранилище не требуется
  • Компромисс: постоянные затраты на вычисления при поступлении новых данных
ALTER TABLE logistics.delivery_events
  CLUSTER BY (region, dispatch_date);
1 docs.snowflake.com/en/user-guide/tables-auto-reclustering
Автоматизация конвейеров данных в Snowflake

Материализованные представления

  • Актуально, когда дорогостоящий запрос выполняется многократно
  • Предварительно вычисляет и сохраняет результат; чтение обращается к нему
  • Snowflake поддерживает представление автоматически в фоновом режиме
  • Ограничения SQL: нет HAVING, ограниченные соединения, нет оконных функций
CREATE MATERIALIZED VIEW 
logistics.emea_summary_mv AS
  SELECT region, carrier_id,
         COUNT(*) AS shipments,
         AVG(delivery_days) AS avg_days
  FROM logistics.shipments
  WHERE region = 'EMEA'
  GROUP BY region, carrier_id;
1 docs.snowflake.com/en/user-guide/views-materialized
Автоматизация конвейеров данных в Snowflake

Выбор подходящего метода

Сигнал в профиле запроса Рекомендуемый метод
TableScan читает почти все разделы; поиск по равенству на столбце с высокой кардинальностью Search Optimization
Тяжёлая агрегация, большие сканирования, непредсказуемые запросы Query Acceleration Service
Одни и те же столбцы фильтрации в большинстве запросов; слабое отсечение Automatic Clustering
Дорогостоящая агрегация часто выполняется на редко меняющихся данных Materialized View
  • Методы дополняют друг друга
Автоматизация конвейеров данных в Snowflake

Lass uns üben!

Автоматизация конвейеров данных в Snowflake

Preparing Video For Download...