Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
Reviewed
Description
HFiles V2 store the memstoreTS of each KV.
In many cases all the KVs in an HFile will have a memstoreTS of 0 (that is the case when at the time the HFile was written there are no KVs that were created after the oldest still active scanner - which is frequently the case).
In that case we:
- do not need to decode the memstoreTS (a vlong), since we know its value is 0 and its length is 1 byte.
- when we compact HFiles and all of the involved files have only KVs with memstoreTS = 0 we know ahead of time that all KVs meet this condition and we do not need to store the memstoreTS in the new HFile.
This issue will cover the first part. The performance improvement will be modest as it is fairly cheap to decode vlongs of size 1.