删除哈希分片键索引
从 MongoDB 5.0.22 开始, 您可以删除哈希分片键的索引。
这可以加快使用哈希分片键分片的collection的数据插入速度。使用 mongosync
时,它还可以加快数据摄取速度。
关于此任务
删除 不必要的索引可以加快CRUD操作的速度。 每个 CRUD 操作都必须更新与文档相关的所有索引。 删除一个索引可以提高所有 CRUD 操作的速度。
删除哈希分片键索引时,服务器会禁用该集合的负载均衡,并从未来的负载均衡轮次中排除该集合。 为了再次将collection包含在均衡轮次中,您必须重新创建分片键索引。
重要
仅当存在针对分片分片键的支持性非哈希索引时,才应从集合中删除哈希分片键索引。 如果分片键上不存在支持的非哈希索引,分片键分片分片键筛选的查询将执行 集合扫描。要查看集合上存在哪些索引,请使用db.collection.getIndexes()
。
步骤
1
2
确认collection中没有孤立文档
警告
跳过此步骤会导致$collStats
报告不正确的孤立文档计数,并在重新添加索引时影响负载均衡操作。
mongod
在集群上每个分片的主节点 (primary node in the replica set)分片 上运行以下命令:
db.runCommand( { cleanupOrphaned: "<database>.<collection>" } )
cleanupOrphaned
返回1
或0
。
值为1
表示:
分片上的
cleanupOrphaned
命名空间中不保留任何孤立文档cleanupOrphaned
命名空间中引用的集合未分片的
值为0
表示发生错误。
在集群中的每个主节点 (primary nodemongod
in the replica set)节点 上重复此步骤。