提示 USE_ADDITIONAL_PARALLELISM 在 Cloud Spanner 中有什么作用

What does the hint USE_ADDITIONAL_PARALLELISM do in Cloud Spanner

在文档中我们可以找到一个名为 USE_ADDITIONAL_PARALLELISM 的查询提示:https://cloud.google.com/spanner/docs/query-syntax#statement-hints

但是文档很短。

欢迎提供任何有意义的信息。

PS:我最初是在this thread

中介绍提示的

一个 Cloud Spanner 查询可能有多个分布级别。 USE_ADDITIONAL_PARALLELISM 查询提示将导致执行查询的节点尝试在分发队列中进一步预取子查询的结果。这在查询执行完整 table 扫描或使用 COUNT()MAXMIN 等聚合执行完整 table 扫描等场景中很有用。子查询可以分布到许多拆分,其中单个子查询到拆分 return 的数据相对较少(例如聚合状态)。但是,如果单个子查询 return 重要数据,则使用此提示可能会导致消费节点上的内存使用量因预取而显着增加。

一个 Spanner 查询可以在多个远程服务器上执行。

来源:来自 Cloud Spanner“查询执行计划”文档的 illustration of the life of a query

根节点协调查询执行。

如果执行计划期望多个拆分中的行满足查询谓词,则会在相应的远程服务器上执行多个子计划。

由于 Spanner 的分布式特性,这些子计划有时可以并行执行;例如,右侧子计划的执行不依赖于左侧子计划的结果。

如果提供USE_ADDITIONAL_PARALLELISM查询提示,如果执行计划包含多个子计划,根节点可以选择增加并行远程执行的数量

回答原题:

根据我的理解,它将传播单个查询以在多个节点上执行;对吗?

  • 此提示不会改变查询的执行方式,它只会使执行的子计划以更高的并行度启动。

在什么场景下使用?

  • 特别是在需要完整 table 比例的情况下,这 可能 导致更快,in wall-time、查询完成,但还应考虑资源分配的权衡以及对其他并行操作的影响。

它对基础设施有什么影响?

  • 如果并行的远程执行数量增加 运行,实例的平均值 CPU 可能会增加。

它如何随节点数量扩展?

  • 节点数量的增加为并行操作提供了额外的能力。

是否需要从不同拆分中选择数据的查询,或者它是否适用于单个拆分?

  • 对于需要驻留在多个拆分上的数据的查询,收益可能会高得多。