I noticed while doing some diagnostic work that we are allocating and freeing a lot of transaction snapshots on history store cursors. Specifically when a history store cursor goes through cursor_func_init, which is pretty much any data access or modification cursor API a snapshot will be allocated if we don't already have one (it will subsequently be released when that operation finishes). For internal sessions, we don't generally have a snapshot pre-allocated.
History store cursors don't expect to be using a snapshot - so this could cause some visibility issues, and is definitely causing contention since we can allocate a lot of snapshots, especially during some reconciliation calls.
We can probably set the WT_CBT_NO_TXN flag on history store cursors, but need to be careful and check whether that has consequences for cursor caching as well.
- causes
-
WT-6400 LSM throughput regression
- Closed