有更多的分片比物理服务器传播Mongo写入是否有意义?

时间:2012-01-11 01:44:41

标签: mongodb replication scaling sharding

MongoDB使用主从复制,这意味着所有写入都转到单个主节点(从属只是备份或备用,或者可以提供不必绝对最新的读取)。

MongoDB还有分片,它将数据分成分片,每个分片都有自己的复制集(即自己的主副本)。因此,如果写入在分片中均匀分布,则写入性能会提高。

到目前为止,我只考虑了分片作为横向扩展选项:添加更多机器来托管分片。

在同一台机器上有多个分片只是为了分散写入是否有意义?

Machine A:   [Shard A Master] [Shard B Replica]
Machine B:   [Shard B Master] [Shard C Replica]
Machine C:   [Shard C Master] [Shard A Replica]

1 个答案:

答案 0 :(得分:2)

在大多数情况下,每台物理机器运行多个mongod进程(作为副本集或作为不同分片的分片服务器)与每台机器运行一个mongod相比,不会提高写入性能。只要数据的“工作集”(即经常访问的数据)和索引适合RAM,MongoDB就会在并发写入情况下表现良好 - 如果每台机器只有一个mongod,那么{ {1}}可以访问所有RAM;如果你有更多,他们最终将争夺有限的资源。

在特殊情况下,例如,如果您的物理机上有大量超额容量,运行多个mongod可能会有所帮助,因为它们可以更好地利用计算机上的可用资源。