Google app engine AppEngine数据存储中的读取过多

Google app engine AppEngine数据存储中的读取过多,google-app-engine,Google App Engine,我正在将数据批量导入到appengine数据存储中,该数据存储最初是另一种格式的(我的应用程序负责这一部分) 当前阶段将插入最终作为一对实体(不同类型)的对象。 该对中的每个实体都有4个(索引属性),插入后,我再次重写它们以添加第5个使用ID的属性(也是索引的,也是唯一更改的属性) 当我这么做的时候,我开始进入免费配额限制,所以我一天就插入了大约1000对。我真的不知道有多少配额是用在这方面的,因为这不是我那天做的唯一一件事 所以,第二天我又试了一批。我又到了大约500个,注意到我的配额使用行为

我正在将数据批量导入到appengine数据存储中,该数据存储最初是另一种格式的(我的应用程序负责这一部分)

当前阶段将插入最终作为一对实体(不同类型)的对象。 该对中的每个实体都有4个(索引属性),插入后,我再次重写它们以添加第5个使用ID的属性(也是索引的,也是唯一更改的属性)

当我这么做的时候,我开始进入免费配额限制,所以我一天就插入了大约1000对。我真的不知道有多少配额是用在这方面的,因为这不是我那天做的唯一一件事

所以,第二天我又试了一批。我又到了大约500个,注意到我的配额使用行为非常奇怪

我使用的写入配额是0!我后来发现了这一点,当时我正在尝试执行XG事务,但没有设置适当的选项,因此写入失败,这是有意义的。 不合理的是,我的读取使用率超过30000次操作(占我每日配额的60%+)!这些实体中的每一个,在被写入之后,都会从另外两个实体读取数据,因此预计会有一定数量的扇出,我预计会有500个条目*2个实体/item*2个读取/entity=2000,而不是30000


如何跟踪发生的情况?

打开appstats。它给出了每个请求的数据存储使用情况的详细视图。

我打开了appstats。有一些有趣的数据。有些RunQuery操作是我没想到的。我得查一下我的代码。更好地使用memcache可能会有所帮助。它没有显示每个调用发生了多少读/写操作,所以还是有点猜测。另外,我想检查我的缓慢导入的进度,所以我在管理页面上转到了数据存储管理。统计数据已经5天没有更新了(从4月27日开始)。我想这可能是因为我每天都超出了读取配额,但昨天我将其保留在60%,仍然没有更新。添加一些日志代码来标识每次获取返回的实体数非常容易,这将有助于估计每次查询的成本。您正在寻找一些意外的扇出、重复读取或返回的实体比您预期的多的查询。或者,您可以执行StackOverflow的目的:发布一些代码,人们可以查看它,看看是否有任何潜在的问题。我没有发布代码的原因是,这个问题出现在很大程度上依赖于我编写的大型库的代码中,我认为发布1000行代码中的10行是不合适的:-)我将尝试添加更多日志,看看是否可以确定它。如果这不起作用,我会继续跟进,看看是否可以用独立代码重现问题,这对发布来说是合理的。