mongoDB更新查询花费的时间太长
我们有一个分片集群,包含4个mongos、3个config和两个分片(每个分片都有3个成员的副本集)。所有mongo实例都在版本3.2上 我们有一个及时的作业,每5分钟运行一次,在当前有1.5亿条记录的集合中增加(如果不存在,则插入;如果存在,则更新)大约16K条记录。该系列在过去几年中一直保持着,每天新的插入量约为20k 直到最后一天(昨天),这个更新过程只花了30-35秒。但现在观察到,此更新时间突然增加到大约110秒 我们使用以下方法跟踪原因,但无法找到根本原因-mongoDB更新查询花费的时间太长,mongodb,insert-update,Mongodb,Insert Update,我们有一个分片集群,包含4个mongos、3个config和两个分片(每个分片都有3个成员的副本集)。所有mongo实例都在版本3.2上 我们有一个及时的作业,每5分钟运行一次,在当前有1.5亿条记录的集合中增加(如果不存在,则插入;如果存在,则更新)大约16K条记录。该系列在过去几年中一直保持着,每天新的插入量约为20k 直到最后一天(昨天),这个更新过程只花了30-35秒。但现在观察到,此更新时间突然增加到大约110秒 我们使用以下方法跟踪原因,但无法找到根本原因- 配置服务器是同步的。(配
//dataMap is a hashMap containing all parameters.
UpdateOptions updateOptions = new UpdateOptions().upsert(true);
Document updateObject = new Document("$setOnInsert",new Document("cat", dataMap.get("cat"))
.append("$set", new Document("timeStamp",dataMap.get("timeStamp"))));
Document query = new Document("host",dataMap.get("host"));
query.append("timeStamp",dataMap.get(timeStamp));
// collectionObject below is object of MongoCollection<Document>
collectionObject.updateOne(query, updateObject, updateOptions);
//dataMap是包含所有参数的哈希映射。
UpdateOptions UpdateOptions=new UpdateOptions().upsert(true);
文档更新对象=新文档($setOnInsert),新文档(“cat”,dataMap.get(“cat”))
.append($set),新文档(“timeStamp”,dataMap.get(“timeStamp”);
文档查询=新文档(“主机”,dataMap.get(“主机”);
append(“timeStamp”,dataMap.get(timeStamp));
//下面的collectionObject是MongoCollection的对象
collectionObject.updateOne(查询、updateObject、updateOptions);
感谢和问候
维巴夫
PS-如果有人选择否决这个问题,请在评论中说明原因。我们能看到插入/更新代码吗?@Trey请找到上面的代码。谢谢,不幸的是,我没有看到原因,Mongo的重量级人物将不得不接受这个问题!