【问题标题】:BigQuery PerformanceBigQuery 性能
【发布时间】:2014-09-15 11:56:11
【问题描述】:

有什么办法可以稳定查询的响应时间吗?例如,这两个执行相同查询的作业有不同的响应时间:

JobId:job_gzTkFvGculpLw0tQRMZvj6rskMI 查询时间:00:00:09.2827336

JobId:job_9wXD9ONxDoI87lD6lOXZJSEM1aE 查询时间:00:00:28.1064037

为什么同一个查询的响应时间会大不相同?

**编辑:projectId 是 nostrum.eu:nostrum

【问题讨论】:

  • 仅供参考:如果您将项目 ID 与工作 ID 一起发布,则 bigquery 工程师可以更轻松地查看日志中发生的情况。
  • projectId 是 nostrum.eu:nostrum
  • 现在,这个jobId job_KsGKrJuoE9_LvuDBKNnIZnaZn5s 已经超过一分钟才响应。
  • 仅供参考,我调查了这些工作,这似乎不是预期的行为。进一步诊断后,我会给出更完整的答案。
  • @JordanTigani 与此无关,还要检查此支持请求(提到了参考),马里奥看起来无法处理。 stackoverflow.com/questions/25792224/…

标签: google-bigquery


【解决方案1】:

默认情况下,BigQuery 使用Query caching 来加快可能多次使用的常见查询的响应时间。

如果您经常将数据加载或流式传输到数据库中,请务必记住这一点,因为您缓存的查询结果可能不是查询的最新结果。

如果要禁用查询缓存,可以在发送到 API 的查询正文中设置参数:

{
  "kind": "bigquery#queryRequest",
  "query": query,
  "defaultDataset": {
    "datasetId": string,
    "projectId": string
  },
  "useQueryCache": False
}

这应该可以使您对同一查询的重复请求具有相对相同的响应时间,但您需要为每个查询请求付费,而不是只为缓存结果。

【讨论】:

  • 请注意,每次基础表更改时,BigQuery 缓存都会自动失效,因此不应提供陈旧数据。
【解决方案2】:

BigQuery 用户在共享基础架构中执行查询。好处是查询价格非常低(无需支付每小时价格),但执行时间会根据同时执行的其他用户的并发查询数量而变化(这就是 BQ 对每个用户强制执行并发查询配额限制的原因)。

如果需要一致性,BigQuery 还为客户提供专有的基础架构模式,其中只有他们的查询在专供他们使用的机器上运行。但是,这些机器需要按月预订。另外一个好处是,这些客户不受并发查询配额的限制,因为无论如何这是他们自己的游戏空间。

https://developers.google.com/bigquery/pricing#reserved_cap

【讨论】:

  • 我们已与商业服务部门联系以签订此基础设施的合同。商业服务说我们创建了一个虚拟机,但是如何从虚拟机中使用 BigQuery?您能否提供更多详细信息?
  • 很奇怪。你有更多我可以用来调查的细节吗?
  • 按照您的建议,我们联系了客服,但他们对 BigQuery 的专有基础架构模式一无所知,他们告诉了虚拟机,但我们认为您指的不是虚拟机.我们如何签订这项独家服务?
  • 很抱歉之前没有注意到这个回复。你跟谁说话?你在哪里找到他们的联系方式?我想知道您是否与 Google 或 3d 派对集成商谈过。
  • 嗨 Felipe,您发布的链接不再提及“保留容量”。我只能在搜索结果中找到它的一瞥,但它链接到的页面[1]也不再有文本。 [1]:cloud.google.com/s/…
猜你喜欢
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多