多个分片键是否有助于提高mongodb的性能?

问题描述

| 由于分片数据库使用分片键来拆分块并路由查询,因此我认为也许更多的分片键可以帮助使更多的查询有针对性 我试图指定像这样的多个键
db.runcommand( { shardcollection : \"test.users\",key : {_id:1,email : 1,address:1}
但我不知道它是否有效以及这样做的不利之处     

解决方法

为了清楚起见,您只能使用一个分片密钥。因此,您不能有多个分片键。 但是,您建议使用复合索引作为分片键。可以做到,但是有一些限制。 例如,
_id
email
address
的组合必须唯一。 用于选择分片键的文档。在此我无法列出更多注意事项。请参阅该文件。     ,分片密钥的选择基于:
{coarseLocality : 1,search : 1}
jungleLocality是您想要存储数据的任何位置, 搜索是对数据的常见搜索。 您必须在分片的键上有一个索引,因此如果您选择一个随机值 您不需要查询的键,基本上是在浪费索引。每增加一个索引 会使写入速度变慢,因此保持索引数量尽可能少很重要。 因此,增加分片组合键并没有太大帮助。 摘录自Kristina Chodrow的书“ Scaling MongoDB”。