请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

递增片键为什么会造成最后一个数据段里堆积最多的文档?

老师好,

想问一下在10’45’'处,为什么说使用单调递增/递减的字段作为片键进行分片就会“造成在最后一个数据段里堆积了大量的或者说最多的文档”?这个逻辑没有听懂。比如下图中:

图片描述

既然分片的范围区间已定,而片键又是均匀递增的,那么落在每个区间中的文档数应该是固定的,为什么会说最后一个区间里会堆积最多文档呢?

正在回答 回答被采纳积分+3

2回答

提问者 Poplar_hills 2020-08-11 08:50:07

官方文档上找到了答案:

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 里,造成写操作的性能问题。

希望老师以后先理解到位再来讲课,否则会给学生造成很大困扰。

2 回复 有任何疑惑可以回复我~
  • 大致意思不是一样吗?老师在这里应该是省略了,因为意思很明白很浅显,所以老师没在这块花更多时间细讲。这里不算什么大问题吧?
    回复 有任何疑惑可以回复我~ 2020-10-07 16:34:18
  • 这里没造成什么很大的困扰吧?有问题问就是了
    回复 有任何疑惑可以回复我~ 2020-10-07 16:35:58
  • 刚开始看这节视频就看你问题,在不知情的情况下还以为出了什么重大教学事故呢
    回复 有任何疑惑可以回复我~ 2020-10-07 16:37:14
丿卖女孩的小火柴 2022-11-15 00:47:41

老师这话没问题吧。因为是单向递增、递减。新插入的文档永远是上限/下限,永远会落在最后一个数据段。本来就是为了多台机器负载均衡,结果总是大部分的工作落在最后一个分片上。不就失去了分片的意义了吗

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信