问题描述
虽然每次创造100000(即十万 ),但它会崩溃。 我的DB是这样的:
EmbDoc(EmbeddedDocument):
id = StringField(required=True, primary_key=True)
field_one = StringField()
...
MyDoc(Document):
emb_doc_list = EmbeddedDcoumentListField(EmbDoc)
total_emb_doc = IntField()
...
现在我希望每个MyDoc都有100个EmbDoc,如果它达到100,我会创建另一个MyDoc。(我的实际数据存在于EmbDoc中)。 为了做到这一点,我查询MyDocs并找到少于100个entires的现有MyDoc并添加一个条目。
如果我尝试创建1000个entires(但在本地计算机上需要大约40秒),这个逻辑工作正常。 但是,当我尝试一次添加大量数据时,它失败了。
任何关于如何解决这个问题的想法都会有所帮助。
1楼
问题出在db查询和序列化上。
由于我们每次都在查询所有MyDoc,因此性能受到了影响。
我们开始维护MyDoc id
和total_emb_doc
的哈希映射。
现在我们只需查看一下即可获得Doc。
目前,每10000个条目需要10秒钟(带序列化)。