สรุปบทความ Optimize your bigquery performance ของ Sagar Tiwari

บทความนี้เขียนวิธี optimize BigQuery’s performance ไปส่องแล้ว เป็นทิปที่เข้าใจง่ายดี เลยขอมาสรุปให้อ่านกัน :wink:

เค้าเขียนไว้ 5 ข้อตามนี้

  1. ถ้าข้อมูลใหญ่มาก ๆ ให้ใช้ top แทน limit เช่น เราจะเลือก 100 แถวแรกมาแสดงผล

    select top 100 *
    from blog_perf.rides
    

    เพราะว่า limit จะเป็นการ filter จาก full table scan ถ้าใช้บ่อย ๆ ใช้เพลิน ๆ เงินปลิวแน่นอนครับ

  2. BigQuery มี feature ที่หน้า UI คือเวลาที่เราเขียน query เสร็จ มันจะคำนวณมาให้ก่อนว่า query นี้จะไปดึงข้อมูลมาประมาณขนาดเท่าไหร่ ก่อนที่เราจะรันจริง ๆ ก็ให้ใช้ feature นี้ก่อนนะ

  3. อย่าใช้ select * อันนี้ก็เป็น practice ที่เราควรใช้ ไม่ว่าจะเป็น BigQuery หรือ data warehouse ตัวอื่น

  4. ระวังเรื่อง order by เพราะว่า BigQuery มี architecture แบบ distributed ดังนั้นการที่เราจะใช้ order by ก็มีผลต่อ performance ด้วยนะ เพราะมันต้องไปดึงข้อมูลมาจาก node ต่าง ๆ มา sort ซึ่งถ้าเราจะใช้จริง ๆ ก็ให้ไปใช้ที่ outermost level ของ query ที่เราเขียน

  5. ให้เริ่มเขียน SQL ที่ table ที่ใหญ่ที่สุดก่อน และ filter ออกให้มากที่สุดก่อนที่จะเอาไปใช้ต่อ จริง ๆ ตรงนี้จะช่วยตอน BigQuery ทำ shuffling ได้ เค้าบอกว่า BigQuery มีตัว optimizer ทำตรงนี้ให้อยู่แล้ว แต่เพื่อความชัวร์​ เราก็ยึดแนว practice นี้ไว้ก่อนดีกว่า อิอิ

ใครมีทิปแนว ๆ optimizing data warehouse’s performance มาแชร์กันได้นะ :kissing_closed_eyes:

1 Like

กดไลค์รัวๆ

กรี๊ดมาก เคยเจอ wide table x small table ใช้จริงแค่ไม่กี่ column
แต่ มา filter ออกหลัง join :rofl:

1 Like