วิธีการปรับประสิทธิภาพ

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

การเพิ่มทรัพยากรไม่ใช่ทางออกเสมอไป

bigger_house

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

แนวทางสี่วิธี

nanobanana: half: ไอคอนเครื่องมือเรขาคณิต 4 แบบจัดเรียงในกริด 2x2 ดีไซน์แบบแบน สีน้ำเงินกรมและเขียวของ DataCamp พื้นหลังขาว ไม่มีข้อความ มินิมอล

  • Search Optimization - equality lookup บน ID ที่มี cardinality สูง
  • Query Acceleration Service - การสแกนหนักที่คาดเดาไม่ได้
  • Automatic Clustering - range filter ซ้ำบนคอลัมน์เดิม
  • Materialized Views - การรวมกลุ่มข้อมูลที่มีค่าใช้จ่ายสูงและถูกเรียกบ่อย
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

Search Optimization

  • ช่วยค้นหาคิวรีที่ดึงข้อมูลจำนวนน้อยจากตารางขนาดใหญ่
  • สร้าง access path แบบถาวร; สามารถข้าม micro-partition บางส่วนได้
  • มีค่าใช้จ่ายด้านพื้นที่จัดเก็บและการประมวลผลในการดูแลรักษา access path
ALTER TABLE logistics.shipments
  ADD SEARCH OPTIMIZATION;
1 docs.snowflake.com/en/user-guide/search-optimization-service
การทำให้ Data Pipeline เป็นอัตโนมัติใน 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
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

การจัดกลุ่มอัตโนมัติ

  • ใช้กับตารางที่คอลัมน์ฟิลเตอร์เดิมปรากฏในคิวรีส่วนใหญ่
  • Snowflake จัดเรียง micro-partition ใหม่เพื่อให้ range filter ข้ามข้อมูลได้มากขึ้น
  • ดูแลรักษาในพื้นหลัง ไม่ต้องใช้ warehouse
  • ข้อแลกเปลี่ยน: มีค่าใช้จ่ายในการประมวลผลเมื่อข้อมูลใหม่เข้ามา
ALTER TABLE logistics.delivery_events
  CLUSTER BY (region, dispatch_date);
1 docs.snowflake.com/en/user-guide/tables-auto-reclustering
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

Materialized View

  • เหมาะเมื่อคิวรีที่ใช้ทรัพยากรสูงถูกเรียกซ้ำบ่อย
  • คำนวณและจัดเก็บผลลัพธ์ล่วงหน้า; การอ่านข้อมูลจะดึงจากผลลัพธ์ที่เก็บไว้
  • Snowflake ดูแลรักษาโดยอัตโนมัติในพื้นหลัง
  • มีข้อจำกัด SQL: ไม่รองรับ HAVING, join จำกัด, ไม่รองรับ window function
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
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

การเลือกวิธีที่เหมาะสม

สัญญาณใน Query Profile วิธีที่ควรพิจารณา
TableScan อ่านเกือบทุก partition; equality lookup บนคอลัมน์ที่มี cardinality สูง Search Optimization
การรวมกลุ่มข้อมูลหนัก, สแกนขนาดใหญ่, เรียกใช้งานแบบคาดเดาไม่ได้ Query Acceleration Service
คอลัมน์ฟิลเตอร์เดิมปรากฏในคิวรีส่วนใหญ่; การตัดข้อมูลทำได้ไม่ดี Automatic Clustering
การรวมกลุ่มข้อมูลที่มีค่าใช้จ่ายสูงถูกเรียกบ่อยบนข้อมูลที่เปลี่ยนแปลงช้า Materialized View
  • วิธีเหล่านี้เสริมการทำงานซึ่งกันและกัน
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

มาฝึกกันเลย!

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

Preparing Video For Download...