最適化手法

Snowflakeにおけるデータパイプラインの自動化

Emily Melhuish

Technical Curriculum Developer, Snowflake

コンピュートの増強が常に解決策とは限らない

bigger_house

Snowflakeにおけるデータパイプラインの自動化

4つのアプローチ

nanobanana: half: 2×2グリッドに配置された4つの幾何学的なツールアイコン、抽象的なフラットデザイン、DataCampのネイビーブルーとグリーン、白背景、テキストなし、ミニマルでクリーン

  • 検索最適化 - 高カーディナリティIDの等値検索
  • クエリアクセラレーションサービス - 予測困難な大規模スキャン
  • 自動クラスタリング - 同じ列への範囲フィルタの繰り返し
  • マテリアライズドビュー - コストの高い集計の頻繁な実行
Snowflakeにおけるデータパイプラインの自動化

検索最適化

  • 大規模テーブルから少数行を検索するクエリを高速化
  • 永続的なアクセスパスを構築;一部のマイクロパーティションをスキップ可能
  • アクセスパス維持のためのストレージ・計算コストが発生
ALTER TABLE logistics.shipments
  ADD SEARCH OPTIMIZATION;
1 docs.snowflake.com/en/user-guide/search-optimization-service
Snowflakeにおけるデータパイプラインの自動化

クエリアクセラレーションサービス

  • 大規模で予測困難なスキャンに対応
  • SELECTINSERTCREATE TABLE AS SELECTCOPY 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におけるデータパイプラインの自動化

自動クラスタリング

  • 大半のクエリで同じフィルタ列が使われるテーブルに有効
  • マイクロパーティションを再配置し、範囲フィルタのスキップを最大化
  • バックグラウンドメンテナンス - ウェアハウス不要
  • トレードオフ:新規データ追加時に継続的な計算コストが発生
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がほぼ全パーティションを読み取り;高カーディナリティ列での等値検索 検索最適化
大規模集計・広範囲スキャン・予測困難な実行 クエリアクセラレーションサービス
同じフィルタ列が大半のクエリで使用され、プルーニングが非効率 自動クラスタリング
変化の少ないデータに対して同じ高コスト集計が頻繁に実行される マテリアライズドビュー
  • 各手法は互いに補完し合う
Snowflakeにおけるデータパイプラインの自動化

さあ、練習しましょう!

Snowflakeにおけるデータパイプラインの自動化

Preparing Video For Download...