我有包含大约1000万个文档的MongoDB集合
我试着在2500~文档左右更新(插入),每次更新都在1K左右。
我尝试将bulkWrite与order=false结合使用。它花费了大约10秒的,,每个文档大约3-4毫秒。
因此,我尝试用updateOne (迭代模式)插入2500个文档,我测量每个文档的平均时间,每次更新大约需要3.5ms。
为什么我不能为bulkWrite获得更好的结果,以及如何改进bulkWrite更新时间?
有一个文档的bulkUpdate示例:
db.collections.bulkWrite( [
{ updateOne :
{
"filter": {"Name": "someName", "Namespace" :
"someNs", "Node" : "someNode" , "Date" : 0},
"update": {"$addToSet" : {"Data" :{"$each" : ["1", , "2"]}}},
"upsert": true
}
}
] )文件示例:
{
"Name": "someName",
"Namespace": "someNs",
"Node": "SomeNode",
"Date": 23245,
"Data" : ["a", "b"]
}我有一个复合索引,包含: Name、Namespace、Node、Date。
当我试图找到文件时,我得到了很好的结果。
发布于 2021-01-21 09:48:56
玩你的批次大小,以找到甜蜜的地方。
大容量写入或updateMany将比单个更新更快。仅仅是因为闲聊较少(较少往返)。正在传输的数据量完全相同。
您需要做的是根据网络、集群配置等,找到一个给您提供最高吞吐量的最佳数量。
通常,您会看到,如果批处理大小较小,则没有将其用于此功能。如果它太大,那么您就会花费太多的时间将包传输到数据库。
https://stackoverflow.com/questions/65824616
复制相似问题