Методи оптимізації

Автоматизація конвеєрів даних у Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Більше обчислень — не завжди рішення

більший_будинок

Автоматизація конвеєрів даних у Snowflake

Чотири різні підходи

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

  • Search Optimization — пошук рівності за високо-кардинальними ID
  • 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, обмежені JOIN, без аналітичних функцій
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

Перейдемо до практики!

Автоматизація конвеєрів даних у Snowflake

Preparing Video For Download...