database - 如何优化 Bigquery 导出数据流式插入中的查询分析和存储成本,这些插入在一天中以不同的时间间隔发生?
问题描述
我正在探索优化查询分析和将数据存储在 BigQuery 表中的成本的选项。如果我们能够重用对较大数据进行的查询,而不是重用/从最后一个查询结果中提取数据,以仅节省再次运行整个查询的成本。
限制
- 无法使用缓存结果,因为数据是流式插入,并且每次重写都会使缓存结果无效。
即使有可以构建的编程解决方案,也要尝试验证是否发生数据不一致或在数据不同步时对其进行管理。
提前致谢!
解决方案
要分析 BigQuery SQL 成本使用情况,您可以列出所有 BigQuery 作业 (BigQuery API) 并分析字节/插槽使用情况和执行时间。除了缓存之外,您还可以分析查询以查看是否有任何候选 分区和集群可以显着降低成本和执行时间。阅读其他 BigQuery SO 帖子,我的印象是物化视图即将到来,这将是另一个出色的性能和成本优化。
为了优化成本本身,您可以比较按需或插槽预留定价模型。
为了优化流插入成本,只要您可以接受 2 分钟延迟(与流的秒延迟相反),您就可以考虑事件驱动的无服务器数据摄取,例如BqTail
在缓存方面,您还可以探索急切缓存选项,每次底层数据更改时都会为最常用的 SQL 创建缓存,但在这种情况下,您必须控制所有数据摄取以重新创建缓存。(*可以使用 BqTail API 后加载任务)