什么是 BI Engine?
BigQuery BI Engine 是一项高速内存中分析服务,它可以智能地缓存最常使用的数据,从而加快 BigQuery 中的许多 SQL 查询的速度。BI Engine 可以加快来自任何来源(包括由数据可视化工具编写的查询)的 SQL 查询的速度,并且可以管理缓存表以进行持续优化。这样,您无需进行手动调整或数据分层即可提高查询性能。使用 BI Engine 时,您可以通过聚簇和分区进一步优化大型表的性能。
例如,如果您的信息中心仅显示上季度的数据,请考虑按时间对表进行分区,以便仅将最新的分区加载到内存中。您还可以结合具体化视图和 BI Engine 的优势。当具体化视图用于联接和展平数据以优化其 BI Engine 结构时,这一做法尤其有效。
BI Engine 具有以下优势:
- BigQuery API:BI Engine 直接与 BigQuery API 集成。通过 REST 或 JDBC 和 ODBC 驱动程序等标准机制使用 BigQuery API 的任何 BI 解决方案或自定义应用都可以使用 BI Engine,而无需进行更改。
- 矢量化运行时:BI Engine 通过 BI Engine SQL 接口,引入了一种称为“矢量处理”的现代技术。在执行引擎中使用矢量化处理,可以一次性批量处理数据,从而更高效地使用现代 CPU 架构。BI Engine 还使用高级数据编码(具体来说是字典运行时长编码)来进一步压缩存储在内存层中的数据。
- 无缝集成:BI Engine 可与 BigQuery 功能和元数据搭配使用,包括已获授权的视图、列和行级安全性以及数据遮盖。
- 预留:BI Engine 预留在项目位置级层管理内存分配。BI Engine 会缓存查询的特定列或分区,并优先缓存首选表中的列或分区。
BI Engine SQL 接口简介
BI Engine SQL 接口扩展了 BI Engine 以与其他商业智能 (BI) 工具(例如 Looker、Tableau、Power BI)和自定义应用集成,以加快数据探索和分析速度。本页面简要介绍了 BI Engine SQL 接口及其为 BI Engine 引入的扩展功能。
BI Engine 使用场景
BI Engine 可以显著加快许多 SQL 查询的速度,包括用于 BI 信息中心的查询。如果您确定对查询至关重要的表,然后将它们标记为首选表,则加速是最有效的。如需使用 BI Engine,请创建一个预留,用于定义 BI Engine 专用的存储容量。您可以让 BigQuery 根据项目的使用模式确定要缓存的表,也可以标记特定表以防止其他流量干扰加速。
BI Engine 在以下使用场景中非常有用:
- 使用 BI 工具分析数据:BI Engine SQL 接口可以加速 BigQuery 查询,无论查询是在 BigQuery 控制台、客户端库中运行还是通过 API 或 ODBC 或 JDBC 连接器运行。这可以显著提高通过内置连接 (API) 或连接器连接到 BigQuery 的信息中心的性能。
- 某些表被查询的频率最高:BI Engine 使您可以指定特定的首选表以加快查询速度。如果您有一部分表被查询的频率最高或用于高可见性信息中心,这一做法将非常有用。
在以下情况下,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 的效果
您可以查看 Cloud Monitoring 中的使用情况统计信息或在 BigQuery 中查询 INFORMATION_SCHEMA,从而更好地了解您的工作负载如何受益于 BI Engine。请确保停用 BigQuery 中的使用缓存的结果选项,以获得最准确的比较结果。如需了解详情,请参阅使用缓存的查询结果。
配额和限制
如需了解适用于 BI Engine 的配额和限制,请参阅 BigQuery 配额和限制。
价格
如需了解 BI Engine 价格,请参阅 BigQuery 价格页面。
查询优化和加速
BigQuery 会通过扩展 BI Engine 将为 SQL 查询生成的查询计划分解为子查询。子查询包含许多操作,例如扫描、过滤或聚合数据,这通常是一个分片上的执行单元。
虽然 BI Engine SQL 接口正确执行了 BigQuery 支持的所有 SQL 查询,但只有某些子查询经过优化。具体而言,BI Engine SQL 接口最适合从存储空间扫描数据的叶级子查询,并执行过滤、计算、聚合、排序和某些类型的连接等操作。BI Engine 尚未完全加速的其他子查询将还原回 BigQuery 来执行。
由于这种选择性优化,更简单的商业智能或信息中心类型查询从 BI Engine 中获益最大(导致子查询减少),因为大部分执行时间都花在处理原始数据的叶级子查询上。
后续步骤
- 了解经过 BI Engine 优化的函数。
- 如需了解如何创建 BI Engine 预留,请参阅预留 BI Engine 容量。
- 如需了解如何指定首选表,请参阅 BI Engine 首选表。
- 如需了解 BI Engine 的利用率,请参阅使用 Cloud Monitoring 监控 BI Engine。