Google App Engine - “java.lang.IllegalArgumentException:数据存储区事务或写得太大。”

时间:2010-05-08 00:21:21

标签: java google-app-engine google-cloud-datastore

使用400键调用DatastoreService.delete(keys)时,我会遇到以下异常:

java.lang.IllegalArgumentException:数据存储区事务或写得太大。

我认为批量删除的限制是500,所以我完全不受限制。我在这里错过了什么吗?

谢谢, Keyur

1 个答案:

答案 0 :(得分:0)

看起来你达到了放置和删除的整体大小限制。你是对的,批量放置和删除有500个实体的限制,但总体大小限制大约为10MB。我不确定是否有记录,但如果没有,我会检查并添加它。

所以,尝试减少每次删除调用的实体数量。

如果你想深入挖掘,放置或删除的大小取决于超出单个实体大小的许多因素,例如:需要更新的索引行的大小。它通常也基于更新本身的增量大小,而不是现有实体的大小。这意味着它并不总是直观或易于计算。这些文章可以提供帮助:

http://code.google.com/appengine/articles/storage_breakdown.html
http://code.google.com/appengine/articles/life_of_write.html