什麼是 BI Engine?

BigQuery BI Engine 是一種快速的記憶體內分析服務,可智慧快取最常使用的資料,藉此加快 BigQuery 中許多 SQL 查詢的速度。BI Engine 可加速處理來自任何來源的 SQL 查詢 (包括資料視覺化工具編寫的查詢),並管理快取資料表,持續進行最佳化。您不必手動調整或分層資料,就能提升查詢效能。您可以運用叢集分區,進一步提升 BI Engine 大型資料表的效能。

舉例來說,如果資訊主頁只顯示上季資料,請考慮按時間劃分資料表,這樣只有最新的分區會載入記憶體。您也可以結合具體化檢視區塊和 BI Engine 的優點。如果具體化檢視區是用來聯結及平坦化資料,以最佳化 BI Engine 的結構,這個做法就特別有效。

BI Engine 具有下列優點:

  1. BigQuery API:BI Engine 會直接與 BigQuery API 整合。任何透過標準機制 (例如 RESTJDBC 和 ODBC 驅動程式) 使用 BigQuery API 的 BI 解決方案或自訂應用程式,都可以直接使用 BI Engine,不需進行任何修改。
  2. 向量化執行階段:透過 BI Engine,BigQuery 會使用稱為「向量化處理」的現代技術。在執行引擎中使用向量化處理,可一次處理批次資料,更有效運用現代 CPU 架構。BI Engine 也會使用進階資料編碼 (具體來說是字典和行程長度編碼),進一步壓縮儲存在記憶體層中的資料。
  3. 完美整合:BI Engine 可與 BigQuery 功能和中繼資料搭配使用,包括授權檢視畫面、資料欄和資料列層級安全防護,以及資料遮蓋。
  4. 預留項目:BI Engine 預留項目會在專案位置層級管理記憶體分配。BI Engine 會快取查詢的特定資料欄或分區,並優先處理標示為偏好的資料表。

BI Engine 架構

BI Engine 可與任何商業智慧 (BI) 工具整合,包括 Looker、Tableau、Power BI 和自訂應用程式,加快資料探索和分析速度。

BI Engine 架構

BI Engine 用途

BI Engine 可大幅加快許多 SQL 查詢的速度,包括用於 BI 資訊主頁的查詢。如要發揮最佳加速效果,請找出查詢作業不可或缺的資料表,然後將這些資料表標示為偏好的資料表。如要使用 BI Engine,請建立預留項目,定義專供 BI Engine 使用的儲存空間容量。您可以讓 BigQuery 根據專案的使用模式決定要快取哪些資料表,也可以標記特定資料表,避免其他流量干擾加速作業。

BI Engine 適用於下列用途:

  • 使用 BI 工具分析資料:無論 BigQuery 查詢是在 BigQuery 控制台、用戶端程式庫中執行,還是透過 API 或 ODBC/JDBC 連接器執行,BI Engine 都能加速查詢。這項功能可大幅提升透過內建連線 (API) 或連接器連線至 BigQuery 的資訊主頁效能。
  • 您有最常查詢的特定資料表: BI Engine 可讓您指定要加速的偏好資料表。如果您有經常查詢或用於高曝光度資訊主頁的資料表子集,這項功能就相當實用。

在下列情況下,BI Engine 可能不符合您的需求:

  • 您在查詢中使用萬用字元:BI Engine 不支援參照萬用字元資料表的查詢,且無法加速這類查詢。

  • 您大量使用不支援的 BigQuery 功能:將商業智慧 (BI) 工具連線至 BigQuery 時,BI Engine 支援大多數的 SQL 函式和運算子,但仍有不支援的功能,包括外部資料表和非 SQL 使用者定義函式。

BI Engine 注意事項

決定如何設定 BI Engine 時,請考量下列事項:

確保特定查詢的加速功能

您可以建立含有 BI Engine 預留項目的獨立專案,確保特定查詢集一律會加速執行。如要這麼做,請確保專案中的 BI Engine 預留項目夠大,足以容納這些查詢中使用的所有資料表,並將這些資料表指定為 BI Engine 的偏好資料表。只有需要加速的查詢才應在該專案中執行。

盡量減少聯結

BI Engine 最適合搭配預先彙整或預先彙整的資料,以及少量彙整的資料。如果聯結的一側很大,另一側很小,例如查詢大型事實資料表並聯結小型維度資料表時,這種情況尤其明顯。您可以將 BI Engine 與具體化檢視區塊結合,執行聯結作業,產生單一大型平面資料表。這樣一來,就不必在每次查詢時執行相同的聯結。

瞭解 BI Engine 的影響

如要進一步瞭解工作負載如何從 BI Engine 受益,請查看 Cloud Monitoring 中的使用統計資料,或在 BigQuery 中查詢 INFORMATION_SCHEMA。請務必在 BigQuery 中停用「使用快取的結果」選項,以取得最準確的比較結果。詳情請參閱「使用快取查詢結果」一文。

限制

含有 VECTOR_SEARCH 函式的查詢不會透過 BigQuery BI Engine 加速。

配額與限制

如要瞭解 BI Engine 適用的配額與限制,請參閱 BigQuery 配額與限制

定價

如要瞭解 BI Engine 的計價方式,請參閱 BigQuery 定價頁面。

查詢最佳化和加速

BigQuery (以及 BI Engine) 會將 SQL 查詢產生的查詢計畫分解為子查詢。子查詢包含多項作業,例如掃描、篩選或彙整資料,通常是分片上的執行單元。

雖然 BI Engine 會正確執行所有 BigQuery 支援的 SQL 查詢,但只會最佳化特定子查詢。具體來說,BI Engine 最適合用於從儲存空間掃描資料的葉層級子查詢,並執行篩選、運算、匯總、排序依據和特定類型的聯結等作業。其他尚未完全由 BI Engine 加速的子查詢,則會還原為 BigQuery 執行。

由於這項選擇性最佳化功能,簡單的商業智慧或資訊主頁類型查詢最能從 BI Engine 受益 (因此子查詢較少),因為大部分的執行時間都花在處理原始資料的葉層級子查詢。

後續步驟