nny*_*thm 2 indexing scalability sharding in-memory mongodb
街上的一句话是,如果你不能保留你在内存中使用的索引,那么MongoDB会变慢.这如何与分片一起使用?分片是否仅在内存中保留自己的BTree,或者每个分片是否需要将整个集合的索引保留在内存中?
分片只在内存中保留自己的BTree ......?
是的,每个分片都管理自己的索引.
街上的一句话是,如果你不能保留你在内存中使用的索引,那么MongoDB会变慢.
使用分片和二级索引时,实际上可能会更糟.关键问题是路由器进程(mongos)对二级索引中的数据一无所知.
如果使用分片键执行查询,它将直接路由到正确的服务器.在大多数情况下,这可以平衡工作量.因此,100个查询可以分布在100个服务器上,每个服务器只回答1个查询.
但是,如果使用辅助键执行查询,则该查询必须转到每个服务器.因此,对路由器的100次查询将导致100个服务器上的10,000个查询或每个服务器100个查询.随着您添加更多服务器,这些"非shardkey"查询的效率会越来越低.工作量并没有变得更加平衡.
一些细节在MongoDB的文档都可以在这里.
| 归档时间: |
|
| 查看次数: |
2562 次 |
| 最近记录: |