Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Write path optimization: Inline transaction files #3487

Open
wjones127 opened this issue Feb 27, 2025 · 2 comments
Open

Write path optimization: Inline transaction files #3487

wjones127 opened this issue Feb 27, 2025 · 2 comments

Comments

@wjones127
Copy link
Contributor

Currently, transaction files are separate from the manifest. They are only locatable from the manifest itself. Thus, if you want to read the transaction data for a given version, it requires two hops: first, read the manifest to figure out the transaction file path, then read the transaction file itself. This also means the commit path requires at least two iops, since you need to write two different objects.

Instead, we should put the transaction file within the manifest. If the manifest is small enough, that means when we read the footer we will also get the transaction data for free. (We already read data with a minimal block size.) For larger manifests, we won't read this data, unless requested.

This will take writes from 3 write IOPS to 2 write IOPS, by combining the transaction file and manifest writes. When there are conflicts, and we need to read the conflicting transactions, this will often result in fewer IOPS as well, since we can read the transaction information in one IOP instead of two.

@westonpace
Copy link
Contributor

This is just the one transaction that was used to create the particular manifest? Or is it the history of transactions?

@wjones127
Copy link
Contributor Author

Just the one transaction

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants