google-app-engine - GAE/去 : datastore iterator too slow

标签 google-app-engine go google-cloud-datastore

在 GAE/Go 中迭代数据存储查询结果非常慢。

q := datastore.NewQuery("MyStruct")
gaeLog.Infof(ctx, "run")                                                 // (1)
it := client.Run(ctx, q)
list := make([]MyStruct, 0, 10000)
gaeLog.Infof(ctx, "start mapping")                                       // (2)
for {
    var m MyStruct
    _, err := it.Next(&m)
    if err == iterator.Done {
        break
    }
    if err != nil {
        gaeLog.Errorf(ctx, "datastore read error : %s ", err.Error())
        <some error handling>
        break
    }
    list = append(list , m)
}
gaeLog.Infof(ctx, "end mapping. count : %d", len(list))                  // (3)

结果如下。

18:02:11.283 run                             // (1)
18:02:11.291 start mapping                   // (2)
18:02:15.741 end mapping. count : 2400       // (3)

(2)(3)大约需要4.5秒,才2400条记录。它非常慢。

我怎样才能提高性能?

[更新]

我在上面的代码 q := datastore.NewQuery("MyStruct") 中添加了查询。 我试图检索类型为 MyStruct 的所有实体。这种有 2400 个实体。

最佳答案

我在使用 cloud.google.com/go/datastore 时发现速度很慢。我迁移到使用 google.golang.org/appengine/datastore

结果如下,不到1秒。

13:57:46.216 run
13:57:46.367 start mapping
13:57:47.063 end mapping. count : 2400

关于google-app-engine - GAE/去 : datastore iterator too slow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43515254/

相关文章:

google-app-engine - Google App Engine + Cloudflare 上的通配符 SSL 证书

go - Go 中的大整数范围

go - 在非默认目录中安装 Go 包

django - 带有 Django 1.0.2 的 Google 应用引擎

java - appengine ChannelFailureException 未在开发中抛出

go - 如何破解马提尼中间件

google-cloud-datastore - 克隆 NDB 实体的最佳方法是什么?

python - 跨集团 (XG) 交易和使用的进一步说明

java - 来自 servlet 的 RemoteApi 调用未在本地应用程序引擎应用程序中加载

java - 如何最好地从现有 PNG 生成图像?