使用'movechunk'命令(因此当平衡器运行时),是否在副本集的主要成员或辅助成员上发生了读取和锁定?
我们的应用程序当前没有从辅助节点读取,因此如果shard balancer / movechunk命令从而仅锁定辅助成员而不影响主节点的性能,那将会很好。
答案 0 :(得分:2)
分片平衡器必须在迁移期间读取并执行对分片主要成员的写入。这对于跨分片维护一致的数据状态是必要的。但是,迁移期间读取和写入期间发生的锁定与正常读取和写入系统期间发生的锁定没有什么不同。因此,这些不应对性能产生重大影响。
如果您确实发现迁移导致性能显着下降,则可能表明您的群集存在其他问题。例如,如果您选择了一个不太理想的分片密钥,那么可能会导致非常频繁的迁移,这会对您的系统造成负担。或者,如果您的系统已经在接近容量的非常繁重的负载下运行,则迁移可能只会添加足够的额外工作以显着降低性能。