BigQuery - 查詢最佳化



BigQuery 由雲計算提供支援,但這並不意味著計算能力是無限的。它也不意味著每個查詢的執行時間都完全相同,無論時間或有多少程序競爭插槽。

什麼是查詢最佳化?

最佳化是一個經常被資料工程和其他程式設計領域的人員使用的流行詞。

對於SQL最佳化分為兩種形式

  • 基於程式碼的最佳化
  • 基於平臺的最佳化

基於程式碼的最佳化概念化和執行較為複雜。因此,本教程不包含此內容。相反,我們將重點介紹 BigQuery 中的工具,這些工具使使用者能夠準確跟蹤並積極抑制過度使用。

透過提高可見性和創造性的槽分配,可以維護一個擁有多個使用者的 BigQuery 專案,併為所有使用者提供足夠的儲存空間和槽空間。這是透過以下方式實現的:

  • 透過執行圖和資料血緣工具跟蹤使用情況。
  • 以不同的模式執行查詢,以減少在給定時間處理的資料量。
  • 利用 BI 引擎等工具對重複違規者(表)進行分割,以主動限制在高流量時段處理的資料範圍。

批處理模式與互動式模式

在 BigQuery Studio SQL 環境中編寫前幾個查詢後,所有查詢的執行方式似乎都相同。從某種意義上說,你是對的。所有查詢都使用一定數量的槽,在執行期間以槽小時表示。但是,實際上有兩種不同的方式來執行 BigQuery 查詢以節省處理和成本。

大多數 BigQuery 查詢在所謂的互動模式下執行。事實上,這是 BigQuery 查詢的預設執行狀態。並且 UI 不會使更改模式的能力可見或明顯。要檢視或更改查詢的執行模式,需要導航到查詢設定。

在該檢視中,您可以配置下一個查詢執行。除了選擇查詢模式外,開發人員還可以選擇如何儲存查詢的結果,可以選擇臨時表、新的 BigQuery 表或覆蓋現有表的內容。這些選項下方是選擇批處理與互動式的選單。

雖然互動模式會立即執行查詢,但批處理模式允許使用者:

  • 排隊所需的 BigQuery 作業。
  • 執行低優先順序查詢,而不會影響高優先順序作業(這些作業可能消耗更多資源)。

執行批處理作業可以幫助使用者規避 BigQuery 查詢執行限制:使用者最多可以執行 20 個併發查詢。

如果批處理作業與正在進行的互動式作業競爭槽,則批處理作業將被暫停或“排隊”,直到有可用空間。這有助於節省資源並避免達到對互動式查詢施加的硬速率限制。

廣告
© . All rights reserved.