DB ver : 6.0.20
Sharde cluster consists of 4 shards(PSS), 4 config servers and 6 mongoses
Shard Key is “name” : 1, 2, 3, … increasing number
I was doing some performance tests
I just found that shard is not balanced after name:369712 chunk defined
(recent name is over 800,000)
(please ignore “Shard key : memo” and chunk manually splited at 450k, 550k, … I just did it for test after unbalanced state)
Q. Why last chunk is not splitting? It seems clearly unbalanced but autosplit is enabled at sh.status(). I can’t get it
// op for Insert Test
for (var i = 401000; i < 420000; i++) { db.test.insertOne({ no: 2, name: i, memo: UUID().toString("hex") + UUID().toString("hex") + UUID().toString("hex") }); }
// part of sh.status()
(skip)
autosplit
{ 'Currently enabled': 'yes' }
(skip)
collections: {
'test.test': {
shardKey: { name: 1, memo: 'hashed' },
unique: false,
balancing: true,
chunkMetadata: [
{ shard: 'rpt01', nChunks: 23 },
{ shard: 'rpt02', nChunks: 29 },
{ shard: 'rpt03', nChunks: 22 },
{ shard: 'rpt04', nChunks: 22 }
],
chunks: [
{ min: { name: MinKey(), memo: MinKey() }, max: { name: 1652, memo: MinKey() }, 'on shard': 'rpt01', 'last modified': Timestamp({ t: 1, i: 0 }) },
{ min: { name: 1652, memo: MinKey() }, max: { name: 2806, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 1 }) },
{ min: { name: 2806, memo: MinKey() }, max: { name: 4442, memo: MinKey() }, 'on shard': 'rpt03', 'last modified': Timestamp({ t: 1, i: 2 }) },
{ min: { name: 4442, memo: MinKey() }, max: { name: 5301, memo: MinKey() }, 'on shard': 'rpt04', 'last modified': Timestamp({ t: 1, i: 3 }) },
{ min: { name: 5301, memo: MinKey() }, max: { name: 6154, memo: MinKey() }, 'on shard': 'rpt01', 'last modified': Timestamp({ t: 1, i: 4 }) },
{ min: { name: 6154, memo: MinKey() }, max: { name: 7208, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 5 }) },
{ min: { name: 7208, memo: MinKey() }, max: { name: 8197, memo: MinKey() }, 'on shard': 'rpt03', 'last modified': Timestamp({ t: 1, i: 6 }) },
{ min: { name: 8197, memo: MinKey() }, max: { name: 9980, memo: MinKey() }, 'on shard': 'rpt04', 'last modified': Timestamp({ t: 1, i: 7 }) },
(skip)
**{ min: { name: 355026, memo: MinKey() }, max: { name: 361257, memo: MinKey() }, 'on shard': 'rpt04', 'last modified': Timestamp({ t: 1, i: 87 }) },**
** { min: { name: 361257, memo: MinKey() }, max: { name: 369712, memo: MinKey() }, 'on shard': 'rpt01', 'last modified': Timestamp({ t: 1, i: 88 }) },**
{ min: { name: 369712, memo: MinKey() }, max: { name: 450000, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 106 }) },
{ min: { name: 450000, memo: MinKey() }, max: { name: 550000, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 108 }) },
{ min: { name: 550000, memo: MinKey() }, max: { name: 650000, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 110 }) },
{ min: { name: 650000, memo: MinKey() }, max: { name: 750000, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 112 }) },
{ min: { name: 750000, memo: MinKey() }, max: { name: 850000, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 114 }) },
{ min: { name: 850000, memo: MinKey() }, max: { name: 950000, memo: MinKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 116 }) },
{ min: { name: 950000, memo: MinKey() }, max: { name: MaxKey(), memo: MaxKey() }, 'on shard': 'rpt02', 'last modified': Timestamp({ t: 1, i: 117 }) }
],
tags: []
}
}
}
// db.test.getShardDistribution()
[direct: mongos] test> db.test.getShardDistribution()
Shard rpt02 at rpt02/48:30201,48:30202,48:30203
{
data: '96.33MiB',
docs: 738875,
chunks: 29,
'estimated data per chunk': '3.32MiB',
'estimated docs per chunk': 25478
}
---
Shard rpt01 at rpt01/48:30101,48:30102,48:30103
{
data: '15.39MiB',
docs: 240432,
chunks: 23,
'estimated data per chunk': '685KiB',
'estimated docs per chunk': 10453
}
---
Shard rpt03 at rpt03/48:30301,48:30302,:30303
{
data: '5.91MiB',
docs: 116559,
chunks: 22,
'estimated data per chunk': '275KiB',
'estimated docs per chunk': 5298
}
---
Shard rpt04 at rpt04/48:30401,48:30402,48:30403
{
data: '5.43MiB',
docs: 104894,
chunks: 22,
'estimated data per chunk': '253KiB',
'estimated docs per chunk': 4767
}
---
Totals
{
data: '123.08MiB',
docs: 1200760,
chunks: 96,
'Shard rpt02': [
'78.26 % data',
'61.53 % docs in cluster',
'136B avg obj size on shard'
],
'Shard rpt01': [
'12.51 % data',
'20.02 % docs in cluster',
'67B avg obj size on shard'
],
'Shard rpt03': [
'4.8 % data',
'9.7 % docs in cluster',
'53B avg obj size on shard'
],
'Shard rpt04': [
'4.41 % data',
'8.73 % docs in cluster',
'54B avg obj size on shard'
]
}
`