【发布时间】:2013-09-19 18:28:28
【问题描述】:
假设我在数据存储中添加了一个新用户。我必须为他添加 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
【问题讨论】:
-
您是在逐个添加用户吗?这肯定会很慢,因为每个 API 操作都会往返于数据库服务器。您应该使用多输入,例如通过一次 put 操作放置所有 200 个实体。
-
您还应该考虑一下为什么需要一次创建 200 个空实体。您对术语的选择也令人困惑,您指的是用户,在创建电影实体时,当现在只有实体的行时,您使用行。
标签: google-app-engine google-cloud-datastore app-engine-ndb