我有以下实体(通过JDO指定):
@PersistenceCapable(
identityType = IdentityType.APPLICATION, detachable = "true")
public class Subscription {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String user;
@Persistent(defaultFetchGroup = "true")
private Link feedUrl;
@Persistent(defaultFetchGroup = "true")
@Extension(vendorName = "datanucleus", key = "gae.unindexed", value="true")
private Link hubUrl;
@Persistent
@Extension(vendorName = "datanucleus", key = "gae.unindexed", value="true")
private String title;
@Persistent(defaultFetchGroup = "true")
@Extension(vendorName = "datanucleus", key = "gae.unindexed", value="true")
private Set<String> seenEntryIds;
}
(参见完整实体定义here)
它只有三个索引属性,id
,user
和feedUrl
。在开发服务器上运行时,控制台会说每个实体都会产生6个写操作。
但是,在生产中运行时,配额详细信息页面显示已有4,276个实体put操作和164,110个索引写操作,每个实体平均提供38个索引写入。这比我预期的要高得多,也远远高于开发服务器所显示的内容。
我添加了gae.unindexed
属性late yesterday,然后推送了更改。因此,我希望今天发生的所有实体放置(这是配额详细信息页面报告的内容)不反映任何额外的索引写入。
答案 0 :(得分:0)
我的第一个猜测是,有一个旧的WEB-INF/datastore-indexes.xml
正在铺设,但你似乎没有一个(而且它不在你的.gitignore
中)。
seenEntryIds
集的平均大小是多少?如果它是~16,这给了我一个测试用例的想法。