The balancer, in every balancing round, check if there are chunks that need to be split to enforce zone boundaries. This means that for every collection we call createCollectionDistributionStatus , this function is very expensive because it build an in-memory representation of all the chunks and tags for the collection. Thus it is linear in the size of the routing table plus the number of tags.
To enforce zones boundaries, actually there is no need to build the in-memory representation of the routing table, thus we could simply skip that and build only the zone map.
- related to
-
SERVER-74584 Splitting chunks for zone violations must not impact scalability
- Backlog