由於分片數據庫使用片鍵分裂塊和路由查詢,所以我覺得可能更多片鍵可以有助於使更多的查詢針對性是否有多個分片鍵有助於mongodb的性能?
我試圖說明這樣
db.runCommand({ shardcollection : "test.users" , key : {_id:1, email : 1 ,address:1}
,但我多鍵不知道它是否有效,以及這樣做的缺點
由於分片數據庫使用片鍵分裂塊和路由查詢,所以我覺得可能更多片鍵可以有助於使更多的查詢針對性是否有多個分片鍵有助於mongodb的性能?
我試圖說明這樣
db.runCommand({ shardcollection : "test.users" , key : {_id:1, email : 1 ,address:1}
,但我多鍵不知道它是否有效,以及這樣做的缺點
在這裏要清楚,你只能有一個分片鍵。所以你不能有多個分片鍵。
但是,您建議將compound index作爲分片鍵。這可以完成,但有一些限制。
例如,_id
,email
和address
的組合必須是唯一的。
choosing a shard key的文件。還有幾個我不能在這裏列出的注意事項。請看那個文件。基於片鍵的
謝謝澄清 – davyzhang 2011-04-15 04:03:17
選擇:
{coarseLocality : 1, search : 1}
coarseLocality是任何你想爲你的數據局部性, 搜索是你的數據的共同探索。
你必須在你所分割的密鑰上有一個索引,所以如果你選擇一個你不查詢的隨機取值的密鑰 ,你基本上就是在浪費一個索引。每增加一個索引 都會使寫入速度變慢,因此儘可能減少索引數量非常重要。
因此,增加分片組合並沒有多大幫助。
摘自Kristina Chodrow的書「Scaling MongoDB」。
我試圖解釋,但似乎沒有運氣......只有碎片鍵可以作爲路由索引,其他人似乎沒有影響查詢 – davyzhang 2011-04-14 09:21:48