DataBoost 用于非分区查询 - Go Cloud Spanner 客户端

问题描述 投票:0回答:1

尝试使用 Spanner Data Boost 编写查询时,出现以下错误:

DataBoost used for non-partitioned query

我使用的代码如下:

stmt := spanner.Statement{
    SQL:    query,
    Params: params,
}
iter := client.Single().QueryWithOptions(ctx, stmt, spanner.QueryOptions{
    Priority:         spannerpb.RequestOptions_PRIORITY_LOW,
    DataBoostEnabled: true,
})
google-cloud-spanner data-boost
1个回答
0
投票

使用 Data Boost 的查询必须按照 Cloud Spanner 文档 中的描述执行并使用

PartitionQueryWithOptions
。我的代码有效:

txn, err := client.BatchReadOnlyTransaction(ctx, spanner.StrongRead())
if err != nil {
    return err
}
defer txn.Close()

stmt := spanner.Statement{
    SQL:    query,
    Params: params,
}
partitions, _ := txn.PartitionQueryWithOptions(ctx, 
    stmt, 
    spanner.PartitionOptions{}, 
    spanner.QueryOptions{
        DataBoostEnabled: true
    }
)
for _, p := range partitions {
    iter := txn.Execute(ctx, p)
    defer iter.Stop()
    for {
        row, err := iter.Next()
        if err == iterator.Done {
            break
        } else if err != nil {
            return err
        }
        fmt.Println(row)
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.