MongoDB - 慢速删除查询

mar*_*rkz 5 performance mongodb query-performance

我在 MongoDB 中有一个包含 8 亿多条记录的集合。我想做一些清理,但删除操作真的(无法使用)很慢——即使删除 1000 条记录也可能需要 10 多分钟。

集合中一个记录的结构是这样的:

{
     'stID' : '00000001',
     'recordID' : '28-4',
     'date' : ISODate('2017-06-06 20:00:00'),
     ......
}
Run Code Online (Sandbox Code Playgroud)

有一个复合索引{'stID' : 1, 'recordID' : 1, 'date' : 1},我的删除查询是这样的:db.coll.remove({ 'stID' : '00000001', 'recordID' : '28-4' }, { multi: true });

数据库是replicaSet的一部分,有一个次要和一个仲裁者,我知道删除操作必须用要删除的每条记录的_id填充oplog,但我仍然很难理解为什么会这样慢,尤其是因为:

  • 主节点或辅助节点上没有大量系统或 IO 活动
  • 次要不落后于主要

我们从未遇到过查找或写入/更新操作的问题。您能否建议我应该使用哪些其他参数/​​命令/工具来查看查询和服务器的情况。

我们使用的存储引擎是 WiredTiger。该服务器具有 128GB 的​​ RAM 和采用 RAID 1 配置的快速 SSD 驱动器。

小智 1

我通过使用以下方法提高了性能bulkWrite

db.ig_posts.bulkWrite([
   { deleteMany: { "filter": { /* your query here */ } }
]);
Run Code Online (Sandbox Code Playgroud)