Google app engine 为什么GAE数据存储这么慢?
假设我在数据存储中添加了一个新用户。我必须为他添加200行,它们只包含零。但这可能需要40秒。真正的用户,已经注册了我的网站必须等待这一次之前,他继续。在MySQL中,它需要几分之一秒的时间。你有什么建议 考虑一下这段代码。在谷歌服务器上需要10秒钟,但速度仍然太慢Google app engine 为什么GAE数据存储这么慢?,google-app-engine,google-cloud-datastore,app-engine-ndb,Google App Engine,Google Cloud Datastore,App Engine Ndb,假设我在数据存储中添加了一个新用户。我必须为他添加200行,它们只包含零。但这可能需要40秒。真正的用户,已经注册了我的网站必须等待这一次之前,他继续。在MySQL中,它需要几分之一秒的时间。你有什么建议 考虑一下这段代码。在谷歌服务器上需要10秒钟,但速度仍然太慢 def get(self): class Movie(ndb.Model): title = ndb.StringProperty (required=True) rating = ndb
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
坦率地说,我建议使用更合理的数据模型。根本没有理由创建一个包含200个字段的模型。不仅初始设置需要花费很长时间,而且加载每个实例将非常昂贵,而且保存将非常昂贵 在任何情况下,几乎肯定不需要从一开始就实例化所有字段
此外,我必须说,即使有200个字段,也不太可能花40秒来保存。您可能正在做一些奇怪的事情,但如果没有看到任何代码,就无法判断。如注释中所述-创建一个实体列表,并将其与一起保存,而不是逐个保存实体。对于字段,我指的不是属性,而是相对db意义上的行。在GAE中添加新行记录的速度非常慢。好的,感谢您的澄清。仍然需要查看一些代码。这是在开发还是在生产?生产。我不提供代码,因为这个想法很简单。设想一个用户模型,其姓名和电子邮件只有两个属性。添加200个新用户大约需要40秒。我不知道如何快速填充数据存储。嗯,我要求您提供代码的原因是,这与我的经验完全不符。您可以在几秒钟内轻松创建数百行。是否要逐个添加用户?这肯定会很慢,因为每个API操作都会往返到DB服务器。您应该使用多放置,例如将所有200个实体放在一个放置操作中。您也应该考虑为什么需要同时创建200个空的实体。您对术语的选择也很混乱,您指的是用户,在创建电影实体时,您使用行,而现在只有行实体。