BigQuery 性能优化与成本控制全解析
1. BigQuery 查询基础与原理
在 BigQuery 中,存在一种元文件,它包含构成表的所有数据文件的元数据。当我们使用 WHERE field1 = 30 这样的谓词从表中查询时,可以先向这个元文件发送查询,它会返回我们所需的唯一文件是 file0002 。有了这个信息,我们就无需打开其他文件来满足查询需求。
BigQuery 查询执行过程涉及多个组件。从高级架构来看,查询从被 GFE 服务器接收开始,被路由到合适的 BigQuery 作业服务器,再由 Dremel 查询服务器处理。不同类型的查询有不同的执行阶段,从简单的扫描 - 过滤 - 计数查询到更复杂的扫描 - 过滤 - 聚合查询,甚至对于高基数的情况可能需要重新分区。
连接操作有两种实现方式:
- 广播连接:适用于小表。
- 哈希连接:适用于大表。
我们可以从查询计划中识别使用的是哪种连接机制。
数据存储方面,BigQuery 采用列格式存储数据,具有字典编码等优势,并且存储集的使用使得时间旅行查询成为可能。分区和聚类的实现有助于提高查询性能。
2. 性能优化原则
传奇计算机科学家 Donald Knuth 有句名言:过早优化是万恶之源。但他的完整表述更为平衡:我们大约 97% 的时间应该忽略小的效率问题,过早优化是万恶之源。然而,我们不应错过那关键的 3% 的优化机会。优秀的程序员不会因这种说法而自满,而是会在确定关键代码后仔细审视它。
性能调优应在开发阶段的后期进行,并且只有在发现典型查询运行
超级会员免费看
订阅专栏 解锁全文
90

被折叠的 条评论
为什么被折叠?



