数据存储写入操作限制超出
Posted
技术标签:
【中文标题】数据存储写入操作限制超出【英文标题】:Datastore Write Operations limit exceeding 【发布时间】:2011-12-31 04:35:50 【问题描述】:我正在使用应用引擎的 Java SDK。 我正在使用主从数据存储。 我只有两个表,每个表都有 30 列,并且没有一个表的大小大于 20 字节。 在每个表中输入 300 行后,它会显示 0.05 万中的 0.03 万的数据存储写入操作。 我检查了表格。它们仅包含 300 个条目。我的代码中没有无限循环的错误。 有人可以帮我指出我可能出错的地方吗?
谢谢, 阿姆里什。
【问题讨论】:
如果您可以发布正在执行写入操作的代码,这可能会有所帮助。 for(int i=0;i 【参考方案1】:如上一个答案所述,这些写入总数包括您的索引写入。 所有实体属性都有关联的默认索引(除非该属性配置为未编制索引),即使您没有定义任何自定义索引。
有关更多详细信息,请参阅http://code.google.com/appengine/articles/indexselection.html,有关写入成本的更多详细信息,请参阅http://code.google.com/appengine/docs/billing.html#Billable_Resource_Unit_Cost。 例如,一个新实体 'put' 是: 每个索引属性值 2 次写入 + 2 次写入(这些用于该属性的默认索引)+ 每个复合索引值 1 次写入(对于您定义的任何相关自定义索引)。
【讨论】:
【参考方案2】:数据存储写入操作包括索引更新。确保您没有任何exploding indexes。还要记住,默认情况下,所有字段都有一个内置索引;将您未使用的任何字段设为未编入索引以保存配额。
此外,为了获得更好的可靠性和可用性,请考虑切换到高可靠性数据存储(但这并不能直接解决您的问题)。
【讨论】:
是的,我选择了这个,因为我需要 1 GB 空间而不是 500 MB。另外,我没有使用任何索引。 @user925666,我相信 HRD 拥有与主从相同的免费配额。如果您没有使用任何类型的疯狂索引,那么您的应用程序确实会发出大约 10,000 个写入请求(将 put 数乘以字段数加上 1 以考虑默认索引)。【参考方案3】:我认为list_flightinfo
的大小存在问题。此外,此代码可能每秒被调用多次。
实体的键是:
src+"_"+dest
在循环中没有改变,因此同一个实体被一次又一次地覆盖。
【讨论】:
以上是关于数据存储写入操作限制超出的主要内容,如果未能解决你的问题,请参考以下文章