首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为写入缩放和查询隔离选择Shard键?

为写入缩放和查询隔离选择Shard键?
EN

Database Administration用户
提问于 2013-12-16 08:17:39
回答 1查看 290关注 0票数 1

mongod文档中,我知道在选择shard键时,键应该具有很高的基数,所以写操作被分发到不同的碎片(一种写标度)。但是对于查询隔离,如果将查询路由到单个碎片服务器(一个mongos实例),将获得更好的查询性能。

对于写缩放,选择一个具有高基数的切分键似乎很容易。但是对于查询隔离,当我不知道详细的切分算法时,如何选择一个shard键将查询路由到一个切分的最大程度?

EN

回答 1

Database Administration用户

发布于 2013-12-16 12:35:15

文档通过后门提供了一个答案。正如你提到的,对于碎片:

  • 对于写优化,选择一个具有高基数的切分键。
  • 对于查询隔离,请选择一个允许mongos实例将查询路由到尽可能少的碎片的碎片键。

它将深入到更多的细节中,这些细节与你要寻找的内容相关。

  • 当尝试查询隔离时,始终在查询中包含完整的切分键,因为它允许mongos提供优化。如果不这样做,它将查询所有的碎片。
  • 如果您喜欢的切分键不是足够的基数,那么添加另一个具有足够基数以创建复合键的字段将允许更有效的写入扩展。

这里最简单的好处是在所有查询中都包含切分键,即使您不需要查询中的数据。这允许您获得优化的好处,而不必重写查询系统来包含集群元数据。

当然,您可以编写使用集群元数据的查询优化器。很有可能获取特定集合中的块数,甚至得到块边界。您必须跟踪集合中块的状态,因为它们会不时更新,但它将允许您编写每次只命中一个碎片的查询。

然而,这是大量的工作,你得到的收益可能不值得额外的工程努力。只有你才能知道这是否是一个值得去追求的优化。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/55084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档