Skip to content

PHOENIX-7958 Reduce per-record and per-block copies in replication log writer#2572

Open
tkhurana wants to merge 1 commit into
apache:PHOENIX-7562-feature-newfrom
tkhurana:PHOENIX-7958
Open

PHOENIX-7958 Reduce per-record and per-block copies in replication log writer#2572
tkhurana wants to merge 1 commit into
apache:PHOENIX-7562-feature-newfrom
tkhurana:PHOENIX-7958

Conversation

@tkhurana

Copy link
Copy Markdown
Contributor

No description provided.

…g writer

Switch the record encoder and block writer from java.io.ByteArrayOutputStream
to HBase's ByteArrayOutputStream and write directly from the backing buffer
via getBuffer()/size() instead of toByteArray(). This eliminates the
per-record body copy in LogFileCodec and the per-block copy in
LogFileFormatWriter (the latter previously copied the whole ~1MB block even
in the uncompressed path). Also hoist the per-record DataOutputStream wrapper
to a field.

Add an opt-in allocation A/B microbenchmark (testAllocationMicrobenchmark)
that drives the full append path and measures heap bytes per record via
ThreadMXBean. Measured -22.5% heap/record (3583.5 -> 2776.1 B).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant