我想知道Firestore的性能期望是什么,以及我们所看到的是否符合要求。查询100个项目,使用getAll
在快照中进行迭代需要2.6秒以上的时间。
此测试的Go代码为:
startTime = time.Now()
query := client.Collection("my_collection").
Where("id", "==", id).
OrderBy("add_date", firestore.Desc).
Documents(context.Background())
fmt.Printf("\n Query Firestore %f:", float64(time.Since(startTime).Nanoseconds())/1000000000)
startTime = time.Now()
query.GetAll()
fmt.Printf("\n Get All Documents: %f", float64(time.Since(startTime).Nanoseconds())/1000000000)
Query Firestore : 0.000049 Seconds
Get All Documents: 2.675766 Seconds
对于大数据集,这似乎非常不可用。 SQL中相同的查询总共不到0.3秒,而这些结果与任何实际查询都没有关系,只是从表中获取100个文档需要2.5秒。
即使我将查询限制在一个文档中,我也会得到
Query Firestore: 0.000022
Get 1 Document: 1.629762
1.6秒获取一个文档似乎很慢。
Firestore吹捧的功能之一是它可以无限扩展扫描规模,但是似乎实际读取大量数据的性能受到限制。这个问题更加复杂,尝试拉动1000个对象需要7秒钟。应该不要使用Firestore一次尝试读取100个以上的文档?