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

运行以下命令,确认没有剩余孤立文档:

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

cleanupOrphaned 返回10

值为1表示:

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

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

值为0表示发生错误。

重复此步骤,直到命令返回1

3

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

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

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

sh.startBalancer()

后退

clearJumboFlag