2011-04-13 62 views
4

由于分片数据库使用片键分裂块和路由查询,所以我觉得可能更多片键可以有助于使更多的查询针对性是否有多个分片键有助于mongodb的性能?

我试图说明这样

db.runCommand({ shardcollection : "test.users" , key : {_id:1, email : 1 ,address:1} 

,但我多键不知道它是否有效,以及这样做的缺点

+0

我试图解释,但似乎没有运气......只有碎片键可以作为路由索引,其他人似乎没有影响查询 – davyzhang 2011-04-14 09:21:48

回答

3

在这里要清楚,你只能有一个分片键。所以你不能有多个分片键

但是,您建议将compound index作为分片键。这可以完成,但有一些限制。

例如,_id,emailaddress的组合必须是唯一的。

choosing a shard key的文件。还有几个我不能在这里列出的注意事项。请看那个文件。基于片键的

+0

谢谢澄清 – davyzhang 2011-04-15 04:03:17

3

选择:

{coarseLocality : 1, search : 1} 

coarseLocality是任何你想为你的数据局部性, 搜索是你的数据的共同探索。

你必须在你所分割的密钥上有一个索引,所以如果你选择一个你不查询的随机取值的密钥 ,你基本上就是在浪费一个索引。每增加一个索引 都会使写入速度变慢,因此尽可能减少索引数量非常重要。

因此,增加分片组合并没有多大帮助。

摘自Kristina Chodrow的书“Scaling MongoDB”。

相关问题