当一次创造10万个实体时,它崩溃了。我的数据库是这样的:
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个实体(但在本地计算机上大约需要40秒),这个逻辑就可以正常工作。但当我一次尝试添加大数据时,它失败得很惨。
关于如何解决这个问题的任何想法都会有帮助。
最佳答案
数据库查询和序列化有问题。因为我们每次都查询所有mydoc,所以性能受到影响。
我们开始维护MyDoc id
和total_emb_doc
的散列映射。现在我们只要查一眼就能找到医生。
目前,每10000个条目需要10秒(序列化)。