虽然一次创建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个的现有MyDoc并添加一个条目。
如果我尝试创建1000个entires(但在本地计算机上需要大约40秒),这个逻辑工作正常。但是,当我尝试一次添加大量数据时,它会失败。
任何关于如何解决这个问题的想法都会有所帮助。
答案 0 :(得分:1)
问题在于db查询和序列化。由于我们每次都在查询所有MyDoc,因此性能受到影响
我们开始维护MyDoc id
和total_emb_doc
的哈希映射。现在我们只需查看一下即可获得Doc
目前,每10000个条目需要10秒钟(带序列化)。