文档菜单
文档首页
/
MongoDB 手册
/

常见问题解答:使用 MongoDB 进行分片

本页内容

  • 分片是否适合新的部署?
  • 分片集合后,我可以选择不同的分片键吗?
  • 为什么我的文档没有分布在各个分片上?
  • 如何...如何检测分片集群配置中的变化?mongos
  • mongos 是如何使用连接的?

本文档回答了关于以下常见问题:分片。参见手册中的分片部分,其中提供了分片概述,包括关于

有时。然而,如果你的数据集适合单个服务器,你应该从非分片部署开始,因为当你的数据集较小时,分片提供的好处很小。

更改分片键的选项取决于你运行的 MongoDB 版本

  • 从 MongoDB 5.0 开始,你可以通过更改文档的分片键来重新分片集合

  • 你可以通过向现有分片键添加后缀字段或字段来细化分片键

提示

另请参阅

当数据分片的分布达到一定阈值后,负载均衡器开始将数据分布在分片中。请参阅迁移阈值。

此外,如果分片中的文档数量超过一定数量,MongoDB无法移动分片。请参阅每个迁移范围的文档最大数量不可分割/大分片。

mongos实例维护一个包含分片集群元数据的配置数据库的缓存。

mongos通过向分片发送请求并发现其元数据已过时来懒惰地更新其缓存。要强制mongos重新加载其缓存,您可以针对每个mongos直接运行flushRouterConfig命令。

每个mongos实例都维护一个连接池,用于与分片集群的成员进行连接。客户端请求逐个使用这些连接;即请求不是复用或流水线化的。

当客户端请求完成时,mongos将连接返回到连接池。这些连接池在客户端数量减少时不会缩小。这可能导致存在大量打开连接的未使用mongos。如果mongos不再使用,则可以安全地重新启动进程来关闭现有连接。

要返回有关mongos使用的所有传出连接池的聚合统计信息,请连接到mongosh,并运行connPoolStats命令

db.adminCommand("connPoolStats");

请参阅系统资源利用率部分UNIX ulimit设置文档。

返回

并发