Google cloud platform BigQuery在(似乎)一个非常简单的查询上非常慢
我们使用GCP日志,这些日志通过日志接收器导出到BigQuery中。 我们没有大量的日志,但每条记录似乎都相当大 使用BigQuery运行简单查询似乎需要花费大量时间。我们想知道这是正常的还是我们做错了什么。。。还有,我们能做些什么来让分析变得更实际一点呢 例如,查询Google cloud platform BigQuery在(似乎)一个非常简单的查询上非常慢,google-cloud-platform,google-bigquery,google-cloud-logging,Google Cloud Platform,Google Bigquery,Google Cloud Logging,我们使用GCP日志,这些日志通过日志接收器导出到BigQuery中。 我们没有大量的日志,但每条记录似乎都相当大 使用BigQuery运行简单查询似乎需要花费大量时间。我们想知道这是正常的还是我们做错了什么。。。还有,我们能做些什么来让分析变得更实际一点呢 例如,查询 SELECT FORMAT_DATETIME("%Y-%m-%d %H:%M:%S", DATETIME(timestamp, "Australia/Melbourne")) as Melb_time,
SELECT
FORMAT_DATETIME("%Y-%m-%d %H:%M:%S", DATETIME(timestamp, "Australia/Melbourne")) as Melb_time,
jsonPayload.lg.a,
jsonPayload.lg.p
FROM `XXX.webapp_usg_logs.webapp_*`
ORDER BY timestamp DESC
LIMIT 100
接受
谢谢大家! 尝试将其添加到查询中:
WHERE _TABLE_SUFFIX > FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 3 DAY))
它将过滤以仅在过去3天内获取带有
表后缀的表,而不是让BigQuery查看可能有多年历史的每个表。尝试将此添加到查询中:
WHERE _TABLE_SUFFIX > FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 3 DAY))
它将过滤以仅在过去3天内获取带有TABLE\u后缀的表,而不是让BigQuery查看可能有多年历史的每个表。在其他支持索引的数据库上,将索引添加到timestamp
列将有助于查询。谢谢!但是BigQuery似乎不使用索引……像这样查询通配符表会影响性能。这是因为在执行查询之前,需要读取它在glob(*
)中匹配的每个表的元数据。尝试减少扫描的表格或在WHERE
子句中使用\u TABLE\u后缀
。看:是的,谢谢!当我手动指定日期时,它的工作速度要快得多。你知道有没有办法缓存元数据一次,以便以后每次都可以使用它?在其他支持索引的数据库上,在timestamp
列中添加索引将有助于查询。谢谢!但是BigQuery似乎不使用索引……像这样查询通配符表会影响性能。这是因为在执行查询之前,需要读取它在glob(*
)中匹配的每个表的元数据。尝试减少扫描的表格或在WHERE
子句中使用\u TABLE\u后缀
。看:是的,谢谢!当我手动指定日期时,它的工作速度要快得多。您知道是否有一种方法可以缓存元数据一次,以便以后每次都可以使用它吗?