我注意到使用Bigquery和VM实例的Google云计算引擎中存在一种奇怪的行为。
我有一个将数据流式传输到Bigquery的java进程。
我希望通过为BigQuery数据集和VM实例选择相同的区域来获得更好的性能,但我的测试显示出意想不到的行为。
CASE1:VM on us-central1-a AND dataset location US 插入Bigquery响应的平均时间:150毫秒
CASE2:欧洲西部1-c上的虚拟机和数据集位置美国 插入Bigquery响应的平均时间:700毫秒
CASE3:VM on us-central1-a AND dataset location EU 插入Bigquery响应的平均时间:1200毫秒
CASE4:欧洲西部1-c上的虚拟机和数据集位置欧盟 插入Bigquery响应的平均时间:1700毫秒
我可以理解CASE2和CASE3的性能下降但是CASE4呢?
测试显示,如果Bigquery数据集位置是" EU"即使VM区域是europe-west1-c,性能也会下降。
我的结论是:永远不要在欧盟使用Bigquery(当然,除了对数据位置的要求外)!
我的考虑有什么问题吗?
答案 0 :(得分:1)
感谢报道。
看起来帖子中提到的延迟包括tables.get()+ tabledata.insertAll()。延迟差异主要是由tables.get()。
引起的我们知道调用与元数据相关的API(例如tables.get)比欧盟要慢。它是由一些现有的基础设施限制引起的,不幸的是它有短期的修复方法。但我们正积极致力于一些后端更改,以最大限度地减少长期的延迟差异。
您可以考虑采取一些措施来缓解这种情况: