As of SERVER-46721, reads on secondaries used the no-overlap point, which is computed as the minimum of replication's lastApplied and WT's all_durable timestamps.
On secondaries, lastApplied is only updated at replication batch boundaries, and all_durable may advance as we apply oplog entries out of order. Because we take the minimum value, the no-overlap point is always equal to lastApplied.
Reads on secondaries will perform unnecessary queries for all_durable. This value is not cached, and requires taking a read lock in WT to traverse a queue of commit timestamps.
We can regain some performance for reads by only using lastApplied on secondaries.
- related to
-
SERVER-44529 Re-acquiring locks after a yield and step down results in wrong parameters on recoveryUnit
- Closed
-
SERVER-46721 Step up may cause reads at PIT with holes after yielding
- Closed