微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 mongodump 执行 COLLSCAN?

如何解决为什么 mongodump 执行 COLLSCAN?

我正在尝试执行 monogdump 操作以导出数据库、所有记录。也没有传递给 mongodump 命令的查询参数。

MongoDB 版本为 4.4.3

我仍然看到它正在从 mongo 日志执行 COLLSCAN。

{


"t": {
    "$date": "2021-02-09T17:29:37.421+00:00"
  },"s": "I","c": "COMMAND","id": 51803,"ctx": "conn529","msg": "Slow query","attr": {
    "type": "command","ns": "notifications.event","appName": "mongodump","command": {
      "getMore": 4159295894400030341,"collection": "event","lsid": {
        "id": {
          "$uuid": "fd3284b9-86e8-4c8a-a3b4-a1787308a4ec"
        }
      },"$clusterTime": {
        "clusterTime": {
          "$timestamp": {
            "t": 1612891775,"i": 52
          }
        },"signature": {
          "hash": {
            "$binary": {
              "base64": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=","subType": "0"
            }
          },"keyId": 0
        }
      },"$db": "notifications","$readPreference": {
        "mode": "primaryPreferred"
      }
    },"originatingCommand": {
      "find": "event","filter": {
        
      },"$clusterTime": {
        "clusterTime": {
          "$timestamp": {
            "t": 1612891718,"i": 4
          }
        },"planSummary": "COLLSCAN","cursorid": 4159295894400030341,"keysexamined": 0,"docsexamined": 72989,"numYields": 93,"nreturned": 72989,"reslen": 16777333,"locks": {
      "ReplicationStateTransition": {
        "acquireCount": {
          "w": 94
        }
      },"Global": {
        "acquireCount": {
          "r": 94
        }
      },"Database": {
        "acquireCount": {
          "r": 94
        }
      },"Collection": {
        "acquireCount": {
          "r": 94
        }
      },"Mutex": {
        "acquireCount": {
          "r": 1
        }
      }
    },"storage": {
      "data": {
        "bytesRead": 17559327,"timeReadingMicros": 1336714
      }
    },"protocol": "op_msg","durationMillis": 1443
  }
}

无论如何我可以避免 COLLSCAN?它会出现的任何原因?

解决方法

集合扫描是检索整个集合的最有效方式。

它并不总是坏的。仅当您需要少量文档(例如 1 个)时才不好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。