MongoDB-片键选择技巧
  TEZNKK3IfmPf 2023年11月12日 10 0

使用分片的目的是为了将数据存储到不同的服务器上, 所以在选择片键的时候,​​应该选择取值范围更广的字段作为片键​​,因为如果取值范围太小, 那么划分出来的数据段就太少, 那么分配到不同服务器的概率就越小, 例如:取值如果只有 true 或 false, 那么就只能划分出两个数据段, 那么也就最多只能保存到两台服务器上。

​应该选择取值分配更平衡字段作为片键​​,因为如果取值范围不平衡, 就会导致某一个数据段的数据太多, 某一台分片服务器压力太大, 例如: 将 age 作为片键, 但是我们的用户 90% 都集中中 20~30 岁, 那么就会导致保存 20~30 数据段的分片服务器存储数据过多压力过大。

​不应该选择单向增加或者减少的字段作为片键​​, 因为如果取值是单向增加或者减少的, 那么就会出现可能出现的最小值数据段或者最大值数据段保存的数据过多, 对应的分片服务器压力过大。

片键选择技巧

  • 如果片键字段取值范围不够广, 那么我们可以使用复合片键
  • 如果片键字段的取值不够平衡, 那么我们可以使用复合片键
  • 如果片键字段的取值是单向增加或减少的, 那么我们可以使用片键字段的哈希值

!> 片键一旦选择就不能更改, 所以在前期选择片键时一定要多动脑

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: mongodb update 下一篇: MongoDB-稀疏索引
  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   30   0   0 服务器
  TEZNKK3IfmPf   2024年05月17日   42   0   0 linux服务器
  TEZNKK3IfmPf   2024年05月31日   52   0   0 linux服务器
  TEZNKK3IfmPf   2024年05月31日   30   0   0 linux服务器centos
  TEZNKK3IfmPf   2024年05月31日   43   0   0 服务器java
  TEZNKK3IfmPf   2024年05月31日   37   0   0 服务器http
TEZNKK3IfmPf