为db.get解释我的AppStats图

时间:2010-07-16 23:33:10

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

我做了db.get([356 keys]),花了8秒钟。以下是此操作的AppStats图的摘录: http://vvcap.net/db/iXvU5LtfG6tp04-kjqvp.htp

356键正常8秒?为什么CPU时间大于API CPU时间?如果有什么我希望API CPU时间更长,因为实体是并行获取的。

所有356个键都适用于此型号:

class Molecule(db.Model):
    meaning = db.StringProperty()
    short_desc = db.StringProperty()
    official = db.BooleanProperty(default=False)
    phrasing = db.ReferenceProperty()
    atoms = db.ListProperty(db.Key) # ~3 list elements on average
    keywords = db.ListProperty(db.Key) # ~20 list elements on average
    phrasings = db.ListProperty(db.Key) # ~1 list element on average
    add_dt = db.DateTimeProperty()
    modify_dt = db.DateTimeProperty()
    delete_dt = db.DateTimeProperty()
    _ucase_meaning = db.StringProperty()

1 个答案:

答案 0 :(得分:1)

6-8秒肯定很高,但你拿到的模型相当复杂。长时间的原因是由于您正在获取的实体的数量和大小 - API时间未考虑的大部分CPU时间是等待请求完成所花费的时间(例如,从一个IO上阻止IO)或更多的平板电脑服务器。)

您可以采取多种方法来加快速度:

  1. 获取更少的实体。
  2. 将模型拆分为两部分,即“完整”模型和“摘要”。仅在可能的情况下仅获取摘要实体。
  3. 记忆获取结果。
  4. 使用获取的数据对您生成的输出进行内存缓存。