递增片键为什么会造成最后一个数据段里堆积最多的文档?
来源:9-3 【分片】分片的依据 - 分片片键

Poplar_hills
2020-08-10
老师好,
想问一下在10’45’'处,为什么说使用单调递增/递减的字段作为片键进行分片就会“造成在最后一个数据段里堆积了大量的或者说最多的文档”?这个逻辑没有听懂。比如下图中:
既然分片的范围区间已定,而片键又是均匀递增的,那么落在每个区间中的文档数应该是固定的,为什么会说最后一个区间里会堆积最多文档呢?
2回答
-
Poplar_hills
提问者
2020-08-11
在官方文档上找到了答案:
If the shard key value is always increasing, all new inserts are routed to the chunk with maxKey as the upper bound. If the shard key value is always decreasing, all new inserts are routed to the chunk with minKey as the lower bound. The shard containing that chunk becomes the bottleneck for write operations.
所以老师你这里就讲错了,这里的意思不是说会“造成在最后一个数据段里堆积了大量的或者说最多的文档”,而是说短段时间内会让所有的写操作都集中在这个 chunk 里,造成写操作的性能问题。
希望老师以后先理解到位再来讲课,否则会给学生造成很大困扰。
232020-10-07 -
丿卖女孩的小火柴
2022-11-15
老师这话没问题吧。因为是单向递增、递减。新插入的文档永远是上限/下限,永远会落在最后一个数据段。本来就是为了多台机器负载均衡,结果总是大部分的工作落在最后一个分片上。不就失去了分片的意义了吗
00
相似问题
回答 1
回答 1