使用Go Cloud Spanner客户端调用DataBoost时遇非分区查询报错求助
解决Spanner Data Boost报错:DataBoost used for non-partitioned query
这个错误的核心原因是:Spanner Data Boost仅支持分区查询(Partitioned Queries),你当前用的Single().QueryWithOptions属于单分区查询接口,不兼容DataBoost的启用条件。
解决方法:
- 如果你的查询是大数据量的扫描/分析类操作(适合分区并行处理),把查询接口换成
PartitionedQueryWithOptions:
stmt := spanner.Statement{ SQL: query, Params: params, } iter := client.PartitionedQueryWithOptions(ctx, stmt, spanner.QueryOptions{ Priority: spannerpb.RequestOptions_PRIORITY_LOW, DataBoostEnabled: true, })
- 如果你的查询只是小数据量的简单查询(不需要分区),直接去掉
DataBoostEnabled: true配置即可,用原来的QueryWithOptions正常执行。
补充说明:
DataBoost是专门为大规模、高资源消耗的分区查询设计的,目的是把这类查询的负载转移到独立的Boost集群,不占用主集群资源。所以Google强制要求只有通过分区查询接口调用时,才能启用DataBoost。
内容的提问来源于stack exchange,提问作者Josh Laird
相关产品推荐
相关产品推荐

