System Information:
OS: Ubuntu 20.04 LTS
System: 80 GB RAM, 1 TB SSD, i7-12700k
这个集合中的文档平均为16KB,这个集合中有50万个文档.我注意到,随着集合变得越来越大,插入文档所需的时间也越来越长.
In what ways could I improve the speed of writes?个
插入15万个文档需要10个小时.这大约是当我们积分这条线时图表所预测的:
def f(num):
return 0.0004*num+0.9594
sum=0
for i in range(500,650):
sum+=f(i*1000)
>> sum/3600
>> 9.61497
Potential upgrades in my mind:个
- 使用C++Mongo引擎进行写入
- 给魔神分配更多的内存
Logs个
iotop
显示了mongod使用<;1%的IO容量,写入速度约为10-20 KB/s
htop
表示魔神只使用了~16 GB的内存\
显示约300 GB固态硬盘可用的磁盘
EDIT:
Psudo代码:
docs=[...]
for doc in docs:
doc["last_updated"]=str(datetime.now())
doc_from_db = collection.find_one({"key":doc["key"]})
new_dict = minify(doc)
if doc_from_db is None:
collection.insert_one(new_dict)
else:
collection.replace_one({"key":doc["key"]},new_dict,upsert=true)