假设我的集合使用了一个由BlockHash和BlockHeight字段组成的复合分片键。
如果我运行一个查询来查找给定BLockHeight的文档,那么Mongo是否必须命中每个shard,因为我们没有按BlockHash过滤?在分片键中使用BlockHeight对查询有帮助吗?
发布于 2021-06-30 06:44:37
理想情况下,每个查询都应该有分片键。根据数据的基数和逻辑分类进行选择。
如果您在BlockHash和BlockHeight上进行分片(按此顺序),则只需在BlockHeight上运行查询即可。你最终会撞到所有的碎片。
最佳实践是,养成对查询运行.explain("executionStats")的习惯。这将告诉您您的查询是如何解析的。以及它碰到了哪些碎片。
https://stackoverflow.com/questions/68186297
复制相似问题