想象一下,我在数据存储区中添加了一个新用户。我必须为他添加 200行(它们只包含零)。但它可能需要 40秒。注册我网站的真实用户必须在此之前等待。在MySQL中它需要几分之一秒。你有什么建议?
考虑这段代码。 Google服务器需要10秒钟,这仍然太慢。
def get(self):
class Movie(ndb.Model):
title = ndb.StringProperty (required=True)
rating = ndb.IntegerProperty (required=True)
@classmethod
def populate(cls, n):
for i in range(n):
o = cls(title='foo', rating=5)
o.put()
t1 = datetime.datetime.now()
Movie.populate(200)
t2 = datetime.datetime.now()
self.response.write(t2 - t1) # ~10 seconds
答案 0 :(得分:6)
如评论中所述 - 不是逐个保存实体,而是创建实体列表并使用multi-put保存它们。
答案 1 :(得分:2)
坦率地说,我建议使用更合理的数据模型。根本没有理由创建一个包含200个字段的模型。初始设置不仅需要很长时间,而且加载每个实例都会很昂贵,而且节省的费用将非常昂贵。
在任何情况下,您几乎肯定不需要从头开始实例化所有字段。
(另外,我必须说,即使有200个字段,需要40秒才能保存似乎极不可能。你可能做了一些奇怪的事情,但没有看到任何代码就无法分辨。)