我有一个“代价高昂”的查询。我想优化它(使它更便宜)。 我运行查询并查看了我认为对优化运行时非常有用的解释。
我的问题如下:对于每个阶段,我都看到“行”,但我没有看到“字节已处理”。由于BQ按“已处理的字节数”收费,我想根据处理的数据量而不是扫描的记录数进行优化。
我的问题是:有没有办法获得这种信息? (实际读取数据的每个执行阶段的字节读取数据量)
答案 0 :(得分:1)
有没有办法获得这种信息?
我认为它不适用于我们(用户)
解释可视化来自Jobs: get API
"query": {
"queryPlan": [
{
"name": "Stage 1",
"id": "1",
"waitRatioAvg": 0.008679262671196536,
"waitRatioMax": 0.009519650796361627,
"readRatioAvg": 0.45445465918366207,
"readRatioMax": 1,
"computeRatioAvg": 0.1796969833724843,
"computeRatioMax": 0.2585664334066632,
"writeRatioAvg": 0.06727424173478641,
"writeRatioMax": 0.06727424173478641,
"recordsRead": "37098285",
"recordsWritten": "37098285",
"steps": [
{
"kind": "READ",
"substeps": [
上查看更多详情
对于每个阶段,我都会看到" Rows",但我看不到" Bytes Processed"。由于BQ按" Bytes Processed"收费,我想优化......
你很可能知道,但想提一下
我不认为收费是基于所有阶段的所有处理字节的总和
一点也不! more details here
您根据所选列中处理的总数据收费,并根据列中的数据类型计算每列的总数据。
所以,我可能有点不对劲,但是你所寻求的优化在性能方面是完全合理的,而不是在收费方面。
另一方面 - 这对我来说是盲点 - billing tier是如何精确计算的?有什么因素?等
如果您知道如何驱动计费层,那么每个阶段处理的字节可能会有所帮助 - 所以这对我来说仍然是个未解决的问题:o(