Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

对分片键进行故障排除

在此页面上

  • 巨型数据块
  • 负载分布不均
  • 查询性能随时间推移下降

理想的分片分片键允许MongoDB在整个集群中均匀分布文档,同时促进常见的查询模式。 不理想的分分片键可能会导致以下问题:

  • 巨型数据块

  • 负载分布不均

  • 查询性能随时间推移下降

在下文中,您可以详细了解分分片键的常见问题及其解决方法。

如果看到巨型数据段,则可能是分片分片键的关联关联基数不足,或者是分分片键的频率分布式不均匀。

要增加分片键的关联关联基数或更改分分片键分片键的分布,您可以:

  • 通过向现有键添加一个或多个后缀字段以提高关联基数,从而优化分片键

  • 使用具有更高关联关联基数的不同分片分片键对集合进行重新分片

要了解应该对集合进行重新分片还是优化分片键,请参阅更改分片键。

为了仅变更分片键值的分布,您还可以考虑使用哈希分片来更均匀地分布数据。

有关选择分片键的建议,请参阅选择分片键

如果您的集群遇到负载分布不均匀的情况,请检查分片键是否单调增加。分片键是一个单调递增的字段,会导致读写分布不均匀。

考虑在order_id字段上分片的 orders集合。 order_id是一个整数,每下一个订单就加一。

  • 新文档通常会写入相同的分片和数据块。接收写入的分片和数据块称为分片和数据块。分片会随时间而变化。分割数据块时,热数据块会移动到不同的分片以优化数据分布。

  • 如果用户更有可能与位于同一分片上的近期订单进行互动,则包含近期订单的分片将接收大部分流量。

如果您有一个单调递增的分片键,请考虑重新分片您的集合。有关选择分片键的建议,请参阅选择分片键

如果您的数据模型需要对单调变化的键进行分片,可以考虑使用哈希分片

如果您发现查询性能随着时间的推移而下降,则集群可能正在执行分散-聚集查询。

要评估您的集群是否正在执行分散-聚集查询,请检查最常见的查询是否包含分分片键。

如果在查询中包含分片键,请检查分片键是否经过哈希处理。使用哈希分片时,文档不会按照分片键字段值的升序或降序存储。对未按升序或降序存储的数据的分片键值执行基于范围的查询会导致性能较低的分散-聚合查询。如果对分片密钥进行基于范围的查询是常见的访问模式,请考虑对集合重新分片。

如果您在最常见的查询中不包含分分片键,则可以通过对集合重新分片来提高性能。 有关选择分分片键的建议,请参阅选择分片键。

后退

查找分片键