【问题标题】:Entity Groups, JPA and the one write per second limit (app engine)实体组、JPA 和每秒一次写入限制(应用引擎)
【发布时间】:2013-04-04 14:46:20
【问题描述】:

我有两个实体parentchild,它们有一个OneToMany relationship。父类有一个@Owned 子类的注解。后面没有关系。 (从孩子到父母)

@Entity
public class Parent {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Owned
    @OneToMany(fetch = FetchType.LAZY)
    private Set<Child> children;

    .........

}


@Entity
public class Child {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Key id;

    public String value;

    .........

    public int hashCode() {
         ... based on this.value ...
    }

    public boolean equals(Object o) {
         ... based on this.value ...
   }

}

问题 1: 此设置是否类似于以 Parent 为祖先的实体组?以下两个语句确实返回一个相等的 Key:

- child.getId().qv.getId().getParent()
- KeyFactory.createKey("Parent", parent.getId())

问题 2: 下面的代码是否需要大约十秒的时间来执行?它的运行时间约为 223 毫秒:

for(int i = 0; i < 10; i++) {
    em.getTransaction().begin();

    parent = em.find(Parent.class, parentId);

    child = new Child("value" + i);
    parent.addChild(child)

    em.merge(parent)

    em.getTransaction().commit();
}

我认为应该需要 10 秒的原因是因为 Google App Engine 文档中的这句话:

“但是,您可以写入同一实体组的速率限制为每秒 1 次写入实体组。”

https://developers.google.com/appengine/docs/java/gettingstarted/usingdatastore

谢谢

【问题讨论】:

    标签: java google-app-engine jpa


    【解决方案1】:

    您是在本地开发服务器还是生产服务器上运行? 本地开发服务器不能完全模仿生产的性能特征。

    限制是作为指导方针。您可能会获得比突发更好的性能。但是,如果您尝试长时间的高写入,则会出现异常。

    数据存储写入的性能限制不会减慢您的代码执行速度。当事务性写入失败时,它们会抛出异常。确保您有一些异常处理程序来检查是否发生这种情况。

    【讨论】:

    • 我在本地和生产服务器上运行了这段代码。在生产服务器中,事务大约需要 1 秒和 500 毫秒。我想我明白你的意思。文档特别说它仅限于每秒写入一次,这很奇怪。我注意到的一件事是,如果我在事务上下文中运行此代码,它并不会比没有时慢得多。事实上,它有时更快。这是正常的,还是因为它只是一个模拟。?
    • 我怀疑如果您运行循环 1000 次而不是 10 次,您将开始看到事务失败异常。正如我所提到的,事务上下文不会显着影响性能,但如果事务失败它会抛出异常。
    【解决方案2】:

    Q1:Parent 确实像祖先。

    Q2:为什么需要 10 秒?我没有看到任何暗示必须是这种情况。所以我对此的回答是否定的。

    【讨论】:

    猜你喜欢
    • 2017-12-22
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多