Transaction level metric collection
- Dominant language
- C++
- Stars
- 16.7k
- Forks
- 1.6k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 126
Description
In the Record Layer, we collect various I/O metrics for a transaction by simply counting or timing various transaction calls, for example: https://github.com/FoundationDB/fdb-record-layer/blob/master/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/provider/foundationdb/InstrumentedReadTransaction.java#L99.
The problem is that this doesn't truly represent the cost of certain operations, for example for a range read, we count it has a single read when, in actuality, it may have involved many round trips to the server to satisfy. Or, maybe it required NO requests to the server because of the RYW cache. We have no one of knowing.
It would be useful if the client driver could track and expose metrics within a transaction such that we can track the real cost of the work done within the transaction.
Contributor guide
Assessment
This issue has not been assessed yet.