为什么 Java 的 cloud spanner 库在调用读取查询时执行“ExecuteStreamingSql”而不是“ExecuteSql”?

Why the cloud spanner library for Java perform `ExecuteStreamingSql` instead of `ExecuteSql` when it calls read query?

我对此没有任何问题,但我只是想通过了解库使用 ExecuteStreamingSql 的原因来了解 ExecuteStreamingSqlExecuteSql 的区别。

最重要的原因是ExecuteSql有一个hard upper limit对于10MiB的返回结果大小。因此必须始终使用 ExecuteStreamingSql.

返回更大的查询结果

此外,ExecuteStreamingSql returns 结果作为结果流,并允许在流/网络连接中断时使用 ResumeToken 从流中的特定点重试中途。