當使用 BigQuery 查詢時,它將 SQL 語句轉換為查詢計劃,分為多個階段,每個階段由不同的執行步驟組成。每個階段都是獨特的(有些階段可能需要大量資源且耗時)。透過 BigQuery 查詢執行圖,發現這些潛在的「減速帶」是輕而易舉的事。
【Bigquery 查詢時常見問題】
1. Slot Contension(插槽爭搶)
當您運行一個查詢指令時,Bigquery 會將這個查詢工作拆分成多個可管理的任務。每個任務會被指派到 1 個 slot,理想上,並行處理可以達到最大效率。但若沒有足夠的 slot,就會出現 slot contension 問題。
2. Insufficient Shuffle Quota
當插槽中的任務完成後,插槽就會將結果立即儲存到 shuffle 中,後續的查詢階段,就會從 shuffle 中取出這些資料,但如果 shuffle 的容量不足,將會出現 Insufficient Shuffle Quota 的問題。
※若遇上以上的問題,解決方式有以下:
1. 優化查詢,以使用較少的資源
2. 分配更多的資源
3. 分配工作負載以避免峰值需求
另外,還必須檢查資料密集型連接的複雜性議題。如果您的查詢包含兩邊都帶有非唯一鍵的聯接,則最終可能會得到一個比輸入表大得多的輸出表。輸出和輸入行計數之間的這種差異表明存在明顯的偏差。
【使用情境】
在使用 BigQuery 進行複雜查詢時,手動優化有時是必要且不可避免的。由於 BigQuery 是一個複雜的分佈式系統,許多內部和外部因素可能影響查詢速度,使得理解查詢的具體情況變得複雜。
【使用實際案例】
Mercadolibre —— 一家在拉丁美洲領先的公司,每天在 BigQuery 上處理數百萬個查詢。他們表示,「查詢執行圖」幫助他們看到查詢放慢的地方,在許多情況下,它指引他們進行了優化。
【總結】
「BigQuery 查詢執行圖」是一個強大的工具,它通過將查詢計劃轉化為易於理解的圖形格式,幫助用戶理解、排查和優化分析查詢。
它不僅提供了查詢的詳細視圖,還提供了性能洞察,這些洞察像友好的提示一樣,提供了提升查詢性能的建議。此外,它還能幫助識別潛在的問題,如插槽爭用和不足的洗牌配額,並提供解決這些問題的方法。這使得 BigQuery 查詢執行圖成為了優化複雜查詢的重要工具。