MongoDB#数据删除优化

阅读 26

02-27 18:00

  • 分批删除
const batchSize = 10000; // 每批删除 10,000 条数据
let deletedCount = 0;
do {
  const result = db.xxx_collection.deleteMany({
    createTime: { $lt: new Date(Date.now() - 1 * 24 * 60 * 60 * 1000) }
  }, { limit: batchSize });
  deletedCount = result.deletedCount;
  print(`已删除 ${deletedCount} 条数据`);
  sleep(1000);
} while (deletedCount > 0);
  • 设置 writeConcern
// writeConcern 用于控制删除操作的确认级别。默认情况下,MongoDB 会等待主节点确认写入操作 
// w: "majority":等待大多数副本节点确认写入操作
// j: true:等待写入操作写入日志文件(journal)后再返回
db.xxx_collection.deleteMany(
  { createTime: { $lt: new Date(Date.now() - 1 * 24 * 60 * 60 * 1000) } },
  { writeConcern: { w: "majority", j: true } }
);
  • 设置超时时间
db.xxx_collection.deleteMany(
  { createTime: { $lt: new Date(Date.now() - 1 * 24 * 60 * 60 * 1000) } },
  { maxTimeMS: 60 * 1000 } // 限制操作最多执行 60 秒
);

精彩评论(0)

0 0 举报