Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

删除哈希分片键索引

在此页面上

  • 关于此任务
  • 步骤
  • 了解详情

从 MongoDB 5.0.22 开始, 您可以删除哈希分片键的索引。

这可以加快使用哈希分片键分片的collection的数据插入速度。使用 mongosync时,它还可以加快数据摄取速度。

删除 不必要的索引可以加快CRUD操作的速度。 每个 CRUD 操作都必须更新与文档相关的所有索引。 删除一个索引可以提高所有 CRUD 操作的速度。

删除哈希分片键索引时,服务器会禁用该集合的负载均衡,并从未来的负载均衡轮次中排除该集合。 为了再次将collection包含在均衡轮次中,您必须重新创建分片键索引。

重要

仅当存在针对分片分片键的支持性非哈希索引时,才应从集合中删除哈希分片键索引。 如果分片键上不存在支持的非哈希索引,分片键分片分片键筛选的查询将执行 集合扫描。要查看集合上存在哪些索引,请使用db.collection.getIndexes()

1

运行以下命令以停止负载均衡器:

sh.stopBalancer()

您只能在sh.stopBalancer() 上运行mongos 。如果在mongod上运行, sh.stopBalancer()会产生错误。

2

警告

跳过此步骤会导致$collStats 报告不正确的孤立文档计数,并在重新添加索引时影响负载均衡操作。

mongod在集群上每个分片的主节点 (primary node in the replica set)分片 上运行以下命令:

db.runCommand(
{
cleanupOrphaned: "<database>.<collection>"
}
)

cleanupOrphaned 返回10

值为1表示:

  • 分片上的cleanupOrphaned命名空间中不保留任何孤立文档

  • cleanupOrphaned命名空间中引用的集合未分片的

值为0表示发生错误。

在集群中的每个主节点 (primary nodemongod in the replica set)节点 上重复此步骤。

3

运行以下命令以删除索引:

db.collection.dropIndex("<index name>")
4

运行以下命令,重启集群上的负载均衡器:

sh.startBalancer()

后退

clearJumboFlag