0

想象一下,我在数据存储中添加了一个新用户。我必须为他添加200 行(它们只包含零)。但这可能需要40 秒。注册我网站的真实用户必须等待这次才能继续。在 MySQL 中,它只需要几分之一秒。你有什么建议?

考虑这段代码。在谷歌服务器上需要 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
4

2 回答 2

6

如评论中所述 - 创建一个实体列表并使用multi-put保存实体,而不是一个一个地保存实体。

于 2013-09-16T06:11:43.487 回答
2

坦率地说,我建议使用更明智的数据模型。完全没有理由创建具有 200 个字段的模型。不仅初始设置需要很长时间,而且加载每个实例会很昂贵,而且保存起来也非常昂贵。

无论如何,您几乎可以肯定不需要从一开始就实例化所有字段。

(另外,我必须说,即使有 200 个字段,用 40 秒来保存似乎也极不可能。你可能在做一些奇怪的事情,但没有看到任何代码是不可能的。)

于 2013-09-15T16:52:23.683 回答