Profiling shows that in bulk insert workloads significant time, up to 40% of the time per insert, is spent constructing the config string "commit_timestamp=..." in WiredTigerRecoveryUnit::setTimestamp, and then parsing it in WT_SESSION::timestamp_transaction. As suggested in
WT-4451 can we add an API specifically to set the transaction commit timestamp passed as a number, without having to parse a config string?
I think this should be a simple change, at least at a POC level, which the performance team could then validate against our performance tests that show this issue.
(Note that the POC done in
WT-4451 does not seem like it fully tested this concept, because it still passed a config string to indicate which timestamp to set, so we still had the expense of parsing a config string).