最佳化方法

在 Snowflake 進行資料管線自動化

Emily Melhuish

Technical Curriculum Developer, Snowflake

算力更大不一定解方

更大的房子

在 Snowflake 進行資料管線自動化

四種不同做法

nanobanana:半幅:四個幾何工具圖示,二乘二排列,抽象扁平設計,DataCamp 藍綠配色,白色背景,無文字,極簡乾淨

  • Search Optimization-在高基數 ID 上做等值查詢
  • Query Acceleration Service-難以預測的重掃描
  • Automatic Clustering-同欄位重複使用區間篩選
  • Materialized Views-高成本彙總且常執行
在 Snowflake 進行資料管線自動化

Search Optimization

  • 協助在大型資料表中找少量列的查詢
  • 建立持久化存取路徑;可略過部分微分割
  • 維護存取路徑需額外儲存與運算成本
ALTER TABLE logistics.shipments
  ADD SEARCH OPTIMIZATION;
1 docs.snowflake.com/en/user-guide/search-optimization-service
在 Snowflake 進行資料管線自動化

Query Acceleration Service

  • 應對大型且難以預測的掃描
  • 支援 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 進行資料管線自動化

Automatic Clustering

  • 適用於多數查詢都用到相同篩選欄位的資料表
  • Snowflake 會重新排序微分割,讓區間篩選能略過更多資料
  • 背景維護,無需倉儲
  • 取捨:新資料進來時有持續的運算成本
ALTER TABLE logistics.delivery_events
  CLUSTER BY (region, dispatch_date);
1 docs.snowflake.com/en/user-guide/tables-auto-reclustering
在 Snowflake 進行資料管線自動化

Materialized Views

  • 當高成本查詢一再重複時很需要
  • 預先計算並儲存查詢結果;讀取直接命中已儲存結果
  • 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 進行資料管線自動化

一起來練習吧!

在 Snowflake 進行資料管線自動化

Preparing Video For Download...