Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何比较BigQuery中的查询性能?_Sql_Google Bigquery_Query Performance - Fatal编程技术网

Sql 如何比较BigQuery中的查询性能?

Sql 如何比较BigQuery中的查询性能?,sql,google-bigquery,query-performance,Sql,Google Bigquery,Query Performance,我在BigQuery中有复杂的查询,我可以修改这些查询以进一步优化。(我正在使用GCP控制台运行这些查询) 但是,我无法测试我的更改是否确实提高了性能 我正在检查执行细节以了解性能,我希望“占用的时隙时间”是一个可比较的指标。但执行细节似乎不一致 运行同一查询两次: 是否有任何其他方法或工具可以用来持续比较查询性能?您可以使用这些方法或工具来分析和比较查询性能,并将重点放在需要更多时间处理的步骤上,并尝试优化这些步骤;但是,请记住,查询性能可能因资源可用性而异。您可以找到改进查询性能的建议

我在BigQuery中有复杂的查询,我可以修改这些查询以进一步优化。(我正在使用GCP控制台运行这些查询) 但是,我无法测试我的更改是否确实提高了性能

我正在检查执行细节以了解性能,我希望“占用的时隙时间”是一个可比较的指标。但执行细节似乎不一致

运行同一查询两次:

是否有任何其他方法或工具可以用来持续比较查询性能?

您可以使用这些方法或工具来分析和比较查询性能,并将重点放在需要更多时间处理的步骤上,并尝试优化这些步骤;但是,请记住,查询性能可能因资源可用性而异。您可以找到改进查询性能的建议

另一方面,关于时隙利用率,当BigQuery执行查询作业时,它将声明性SQL语句转换为执行图,分解为一系列查询阶段,这些阶段本身由更细粒度的执行步骤集组成。BigQuery利用高度分布式的并行体系结构来运行这些查询,而阶段对许多潜在工作人员可能并行执行的工作单元进行建模。BigQuery查询执行是动态的,这意味着可以在查询运行时修改查询计划。在查询运行时引入的阶段通常用于改进整个查询工作人员中的数据分布。无论何时提交新查询,容量都会自动在执行的查询之间重新分配。随着每个查询的可用容量增加,各个工作单元可以优雅地暂停、恢复和排队


基于此,BigQuery不能保证在执行查询的所有时候所消耗的时隙时间都是相同的,因为这取决于资源的状态及其可用性。我建议您阅读一些文档,在这些文档中可以找到关于BigQuery如何处理查询的解释

你有机会点击那个名为“了解更多”的链接吗?@MikhailBerlyant-我有。根据该文档,时隙时间应该代表查询完成的计算工作,这就是为什么我想将它用作一个可比较的度量。但是对于同一个查询,它似乎是不一致的,这让我很困惑。你到底想优化什么?消耗的时间或数据量?这两种方法对您来说都是有价值的,但是数据的使用会带来直接的成本。我正在比较的查询消耗的数据量几乎相同,输出结果也相同。在这种粒度级别上,时间将更难优化。因为BQ是一个共享/云资源,所以可能有很多其他作业同时在同一硬件上运行,也可能没有,因此示例中的时隙时间差异可能只是随机波动。一般来说,针对数据使用情况的优化(分区、集群、最小化扫描列、最小化连接等)也会在时间减少方面带来好处。