|
Still TBD what can actually be done here and is realistically pending a profile of SERVER-58960. Some thoughts if extracting the shard key value under the new shard key pattern is expensive would be:
- Extract the shard key value as a KeyString instead of a BSONObj so it doesn't need to be converted afterwards to query the ChunkManager for the new owning ShardId.
- Extract the current shard key value and new shard key value in a single pass over the BSONObj.
- (Specific to updates) Cache the current shard key value and new shard key value from what was extracted already in UpdateStage to avoid doing it a second time in OpObserverImpl.
|