2
我正在測試MongoDB實現,我試圖將1,000,000個記錄批量插入到一個集合中並讓它在兩個分片之間均勻分佈。我最初的試驗看到一個包含995760條記錄的碎片,另一個碎片只包含4251條記錄。我試圖預先拆分,但沒有任何改變。我對分片的概念很陌生,希望對這個主題有所幫助。MongoDB分片沒有最佳分配
UPDATE:
在字段 「號碼」,這是我的範圍的整數我的片鍵從1 - 999999
狀態:
{
"sharded" : true,
"ns" : "test.test_collection",
"count" : 999999,
"numExtents" : 21,
"size" : 43982976,
"storageSize" : 210247680,
"totalIndexSize" : 60396112,
"indexSizes" : {
"_id_" : 32466896,
"number_1" : 27929216
},
"avgObjSize" : 43.983019983019986,
"nindexes" : 2,
"nchunks" : 239,
"shards" : {
"firstset" : {
"ns" : "test.test_collection",
"count" : 995754,
"size" : 43813176,
"avgObjSize" : 44,
"storageSize" : 123936768,
"numExtents" : 11,
"nindexes" : 2,
"lastExtentSize" : 37625856,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 60118128,
"indexSizes" : {
"_id_" : 32319728,
"number_1" : 27798400
},
"ok" : 1
},
"secondset" : {
"ns" : "test.test_collection",
"count" : 4245,
"size" : 169800,
"avgObjSize" : 40,
"storageSize" : 86310912,
"numExtents" : 10,
"nindexes" : 2,
"lastExtentSize" : 27869184,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 277984,
"indexSizes" : {
"_id_" : 147168,
"number_1" : 130816
},
"ok" : 1
}
},
"ok" : 1
}
更新2:
感謝@Sammaye的建議。這個問題與我的分片鍵有關。當我對密鑰進行散列處理時,批量插入操作均勻地分割記錄。感謝所有的幫助!
我們在這裏需要大量的信息,你可以通過'status()'進行編輯嗎?同時告訴我們你的分片密鑰是什麼 – Sammaye
我曾經提過的一件事是你的分片密鑰是montonic,這意味着它從1-999,999,這可能意味着分片正在按照它的意思去工作,分片1已經變滿了,因爲這樣已經溢出到碎片2.如果你嘗試了散列鍵,它會改變你的數據分佈嗎? – Sammaye
當你說散列分片密鑰時,我假設你是指爲了獲得均勻散佈而散列的散列密鑰哈希。或者你的意思是在分片設置上有一個標誌可以讓你激活哈希? – Rich