1

所以我们有一个包含大约 1 亿条记录的大集合。我们需要分片,我正在做一些测试。我发现在分片的集合上运行查询时性能下降,即使只有 1 个分片。

我启动了一个 mongos 并将 mongod 添加到 shardcluster(所以基本上只有 1 个服务器)。当我用大约 230000 个返回值进行 .explain() 查询时,响应时间约为 800ms,这与我直接在 mongod 服务器上查询时相同。我为这个特定的集合启用了分片,仍然是相同的响应时间(800 毫秒)。现在我为集群启用共享并添加一个分片键,对于 mongos 上完全相同的查询,响应时间增加到 1400 毫秒。当我直接在 mongod 上查询时,响应时间仍然是 800 毫秒。此外,对未分片的集合的所有其他查询在 mongos 和 mongod 上显示相同的响应时间,但是一旦对集合进行分片,响应时间就会显着增加(几乎翻倍)。

发生了什么,为什么响应时间明显变差了?这阻碍了我们回到分片。我们需要 2 个分片才能在一台大服务器上获得相同的性能,这不应该是分片的本质......

4

0 回答 0