Docs 菜单
Docs 主页
/
MongoDB Manual
/

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

在此页面上

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

本文档回答了有关片的常见问题。 另请参阅手册中的分部分,其中概述了分片,包括以下详细信息:

有时。但是,如果您的数据集适合放在单个服务器上,则应从非分片部署开始,因为在数据集较小的情况下进行分片几乎没有优势

更改分片键的选项取决于您当前运行的 MongoDB 版本:

提示

另请参阅:

一旦数据段的分布达到特定阈值,负载负载均衡器就会开始跨分片分布数据。 请参阅迁移阈值。

此外,如果数据段中的文档数据块超过数据块,则MongoDB无法移动该数据段。 请参阅要迁移的每个范围的最大文档数不可分割/巨型数据段。

mongos实例维护配置数据库的缓存,该数据库保存分分片集群的元数据。

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

每个mongos实例都维护一个与分分片集群成员的连接池。 客户端请求一次使用一个这些连接;即请求不是多路复用或管道化的。

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

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

db.adminCommand("connPoolStats");

请参阅 《自管理部署的 UNIXulimit 设置》 文档中的“ 系统资源利用率”部分。

后退

并发