-
Notifications
You must be signed in to change notification settings - Fork 6.4k
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
User-defined timestamp support for DeleteRange()
#10661
Conversation
DeleteRange()
DeleteRange()
e57026d
to
22b3167
Compare
@cbi42 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @cbi42 for the contribution!
A few initial questions/comments. More will follow
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
1 similar comment
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
658e98b
to
d6fc542
Compare
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
d6fc542
to
b9ab5bb
Compare
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
@cbi42 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
@cbi42 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @cbi42 for the great work! Left a few comments after another pass.
e151c3a
to
a9fc476
Compare
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
@cbi42 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks a lot for the contribution @cbi42 !
LGTM. It would be great to make sure no measurable perf regression for use cases that disable timestamp.
a9fc476
to
7d4415c
Compare
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
7d4415c
to
93a61e7
Compare
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
@cbi42 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
@cbi42 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
c9fffc8
to
17cef9c
Compare
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
17cef9c
to
f40f50b
Compare
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
@cbi42 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
f40f50b
to
c3ed1d9
Compare
@cbi42 has updated the pull request. You must reimport the pull request before landing. |
@cbi42 has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
Summary: Add user-defined timestamp support for range deletion. The new API is
DeleteRange(opt, cf, begin_key, end_key, ts)
. Most of the change is to update the comparator to compare without timestamp. Other than that, major changes areFragmentedRangeTombstoneList
,RangeTombstone
, etc.) to store timestamps.Test plan:
make check
python3 tools/db_crashtest.py --enable_ts whitebox --readpercent=57 --prefixpercent=4 --writepercent=25 -delpercent=5 --iterpercent=5 --delrangepercent=4
db_bench
to measure regression when timestamp is not enabled. The tests are for write (with some range deletion) and iterate with DB fitting in memory:./db_bench--benchmarks=fillrandom,seekrandom --writes_per_range_tombstone=200 --max_write_buffer_number=100 --min_write_buffer_number_to_merge=100 --writes=500000 --reads=500000 --seek_nexts=10 --disable_auto_compactions -disable_wal=true --max_num_range_tombstones=1000
. Did not see consistent regression in no timestamp case.