常见问题解答:使用 MongoDB 进行分片
本文档回答了关于以下常见问题:分片。参见手册中的分片部分,其中提供了分片概述,包括关于
分片是否适用于新的部署?
有时。然而,如果你的数据集适合单个服务器,你应该从非分片部署开始,因为当你的数据集较小时,分片提供的好处很小。
在分片了一个集合之后,我能选择不同的分片键吗?
更改分片键的选项取决于你运行的 MongoDB 版本
我的文档为什么没有被分布在分片中?
当数据分片的分布达到一定阈值后,负载均衡器开始将数据分布在分片中。请参阅迁移阈值。
此外,如果分片中的文档数量超过一定数量,MongoDB无法移动分片。请参阅每个迁移范围的文档最大数量和不可分割/大分片。
如何...mongos
如何检测分片集群配置的变化?
mongos
实例维护一个包含分片集群元数据的配置数据库的缓存。
mongos
通过向分片发送请求并发现其元数据已过时来懒惰地更新其缓存。要强制mongos
重新加载其缓存,您可以针对每个mongos
直接运行flushRouterConfig
命令。
《mongos》如何使用连接?
每个mongos
实例都维护一个连接池,用于与分片集群的成员进行连接。客户端请求逐个使用这些连接;即请求不是复用或流水线化的。
当客户端请求完成时,mongos
将连接返回到连接池。这些连接池在客户端数量减少时不会缩小。这可能导致存在大量打开连接的未使用mongos
。如果mongos
不再使用,则可以安全地重新启动进程来关闭现有连接。
要返回有关mongos
使用的所有传出连接池的聚合统计信息,请连接到mongosh
,并运行connPoolStats
命令
db.adminCommand("connPoolStats");
请参阅系统资源利用率部分UNIX ulimit
设置文档。