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