首页 > 解决方案 > 为什么查询 1400 个实体需要 1.5 秒?

问题描述

我有一个使用数据存储的 GAE 应用程序。这是一个非常低流量的应用程序(约 1 个请求/秒或更少)。

数据存储并不大,总共可能 300MB,但每秒读/写次数也很少。

然而,读取速度是非常糟糕的。如果我做:

q := datastore.NewQuery("Sale")
var sales []IndividualSale
keys, err := client.GetAll(ctx, q, &sales)

简单地返回所有“销售”类型的实体需要 1.5- 总共只有约 1400 个!返回 1400 个实体(每个实体有大约 10 个属性)的 1.5 秒是非常糟糕的性能。

我怎样才能加快速度?我正在使用"cloud.google.com/go/datastore"(不是我听说更快但已弃用的旧版 appengine 模块)和 golang 1.15

这看起来对吗?我是否需要将其添加到index.yaml(我认为仅当您的查询需要访问特定属性时才需要?)。

编辑:

在 Chrome Devtools(请求需要 1-1.5 秒才能完成)和日志语句中都可以观察到延迟:

q := datastore.NewQuery("Sale")
var sales []IndividualSale
start := time.Now()
keys, err := client.GetAll(ctx, q, &sales)
log.Debug("Took ", time.Since(start)) // Prints "Took 1.320244586s"

Edit2:这是有问题的查询的云跟踪:

在此处输入图像描述

标签: gogoogle-app-enginegoogle-cloud-datastore

解决方案


推荐阅读