gpt4 book ai didi

go - GoLang Firestore慢批写入

转载 作者:行者123 更新时间:2023-12-01 22:14:04 29 4
gpt4 key购买 nike

我正在将Golang与Firestore结合使用,以通过批量写入来读取/写入/更新信息。
我的代码如下:

t0 := time.Now()
iter := client.Collection("subs").Where("some key", "==", lookup).Limit(499).Documents(ctx)
defer iter.Stop()
batch := client.Batch()
i := 0
for {
sub, err := iter.Next()
if err == iterator.Done {
break
}
i++
sfRef := client.Collection("subs").Doc(sub.Ref.ID)
batch.Set(sfRef, map[string]interface{}{
"some key": update_value,
}, firestore.MergeAll)
}
commit, err := batch.Commit(ctx)

批量更新大约需要1/2秒,如果我们需要更新500 000个条目,这是不合适的。
我想知道这1/2秒是否是Firestore的正常响应时间,如何优化此查询?

最佳答案

如果您需要更新与查询匹配的所有文档,而与查询中的任何值无关,则一种优化方法是让Firestore完全不要求任何字段:

iter := client.Collection("subs").Select().Where("some key", "==", lookup).Limit(499).Documents(ctx)

https://pkg.go.dev/cloud.google.com/go/firestore?tab=doc#Query.Select

如果您的集合中有包含在索引字段中包含顺序值的文档,这是正常现象,但上述优化仍然适用:

包含文档的集合的最大写入率
索引字段中的连续值:每秒500

https://firebase.google.com/docs/firestore/quotas#writes_and_transactions

关于go - GoLang Firestore慢批写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61575212/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com