[fix](mow) reduce mow delete bitmap count: agg and remove delete bitmap of pre rowsets when cu compaction#49383
Conversation
|
Thank you for your contribution to Apache Doris. Please clearly describe your PR:
|
|
run buildall |
TPC-H: Total hot run time: 34480 ms |
TPC-DS: Total hot run time: 194000 ms |
ClickBench: Total hot run time: 31.14 s |
BE UT Coverage ReportIncrement line coverage Increment coverage report
|
2643fe4 to
2c5da11
Compare
|
run buildall |
|
TeamCity cloud ut coverage result: |
TPC-H: Total hot run time: 34206 ms |
TPC-DS: Total hot run time: 192722 ms |
ClickBench: Total hot run time: 31.79 s |
BE UT Coverage ReportIncrement line coverage Increment coverage report
|
6a68198 to
9a434ec
Compare
|
run buildall |
|
TeamCity cloud ut coverage result: |
TPC-H: Total hot run time: 34384 ms |
TPC-DS: Total hot run time: 186397 ms |
ClickBench: Total hot run time: 31.18 s |
BE UT Coverage ReportIncrement line coverage Increment coverage report
|
|
run buildall |
|
TeamCity cloud ut coverage result: |
TPC-H: Total hot run time: 34483 ms |
TPC-DS: Total hot run time: 194753 ms |
ClickBench: Total hot run time: 31.74 s |
BE UT Coverage ReportIncrement line coverage Increment coverage report
|
TPC-DS: Total hot run time: 185815 ms |
ClickBench: Total hot run time: 29.31 s |
|
run buildall |
|
PR approved by at least one committer and no changes requested. |
Cloud UT Coverage ReportIncrement line coverage Increment coverage report
|
TPC-H: Total hot run time: 33972 ms |
TPC-DS: Total hot run time: 193320 ms |
ClickBench: Total hot run time: 29.8 s |
|
run buildall |
Cloud UT Coverage ReportIncrement line coverage Increment coverage report
|
TPC-H: Total hot run time: 33570 ms |
TPC-DS: Total hot run time: 186221 ms |
ClickBench: Total hot run time: 29.34 s |
…ap of pre rowsets when cu compaction (apache#49383) ### What problem does this PR solve? This PR reduce delete bitmap count of mow tables #### Basic idea 1. when do cumulative compaction [start_rowset, end_rowset], which version is [start_version, end_version] 2. agg pre_rowsets'(version less than start_version) delete bitmap between [start_version, end_version] to end_version, 3. when all of the rowsets of [start_rowset, end_rowset] are deleted, delete pre rowsets' delete bitmap between [start_version, end_version). #### One example suppose the rowset and delete bitmap layout is: ``` [rowset_id]: [delete bitmap] r1-3: v6, v7, v8, v9 r4-6: v7, v8, v9 r7: v8, v9 r8: v9 r9: ``` if do cumulative compaction for {r7, r8, r9} before this pr, the delete bitmap layout is (there is 7 delete bitmap left): ``` [rowset_id]: [delete bitmap] r1-3: v6, v7, v8, v9 r4-6: v7, v8, v9 r7-9: ``` after this pr (there is 3 delete bitmap left): ``` [rowset_id]: [delete bitmap] r1-3: v6, new_v9 // new_v9 is agged by the previous v7, v8, v9 of r1-3 r4-6: new_v9 // new_v9 is agged by the previous v7, v8, v9 of r4-6 r7-9: ``` #### The implementation of local mode ##### delete bitmap in BE memory 1. agged when delete stale rowset path 2. removed when delete unused rowsets ##### delete bitmap in BE local storage `save_meta` to store delete bitmap after remove unused rowsets related delete bitmap #### The implementation of cloud mode ##### delete bitmap in BE memory 1. agged when delete stale rowset path 2. removed when delete unused rowsets ##### delete bitmap in Meta Service 1. agged when finish compaction 2. send `update_delete_bitmap` to ms to modify and remove pre rowsets delete bitmap ### Release note None
### What problem does this PR solve? now, the delete bitmap is removed when move stale rowsets to unused rowsets, but if some queries is still read the stale rowsets, the query result may get duplicated keys. this pr change the remove of delete bitmap when remove unused rowsets. this pr is based on #49383
…ap of pre rowsets when cu compaction (apache#49383) This PR reduce delete bitmap count of mow tables 1. when do cumulative compaction [start_rowset, end_rowset], which version is [start_version, end_version] 2. agg pre_rowsets'(version less than start_version) delete bitmap between [start_version, end_version] to end_version, 3. when all of the rowsets of [start_rowset, end_rowset] are deleted, delete pre rowsets' delete bitmap between [start_version, end_version). suppose the rowset and delete bitmap layout is: ``` [rowset_id]: [delete bitmap] r1-3: v6, v7, v8, v9 r4-6: v7, v8, v9 r7: v8, v9 r8: v9 r9: ``` if do cumulative compaction for {r7, r8, r9} before this pr, the delete bitmap layout is (there is 7 delete bitmap left): ``` [rowset_id]: [delete bitmap] r1-3: v6, v7, v8, v9 r4-6: v7, v8, v9 r7-9: ``` after this pr (there is 3 delete bitmap left): ``` [rowset_id]: [delete bitmap] r1-3: v6, new_v9 // new_v9 is agged by the previous v7, v8, v9 of r1-3 r4-6: new_v9 // new_v9 is agged by the previous v7, v8, v9 of r4-6 r7-9: ``` 1. agged when delete stale rowset path 2. removed when delete unused rowsets `save_meta` to store delete bitmap after remove unused rowsets related delete bitmap 1. agged when delete stale rowset path 2. removed when delete unused rowsets 1. agged when finish compaction 2. send `update_delete_bitmap` to ms to modify and remove pre rowsets delete bitmap None
…ap of pre rowsets when cu compaction (apache#49383) This PR reduce delete bitmap count of mow tables 1. when do cumulative compaction [start_rowset, end_rowset], which version is [start_version, end_version] 2. agg pre_rowsets'(version less than start_version) delete bitmap between [start_version, end_version] to end_version, 3. when all of the rowsets of [start_rowset, end_rowset] are deleted, delete pre rowsets' delete bitmap between [start_version, end_version). suppose the rowset and delete bitmap layout is: ``` [rowset_id]: [delete bitmap] r1-3: v6, v7, v8, v9 r4-6: v7, v8, v9 r7: v8, v9 r8: v9 r9: ``` if do cumulative compaction for {r7, r8, r9} before this pr, the delete bitmap layout is (there is 7 delete bitmap left): ``` [rowset_id]: [delete bitmap] r1-3: v6, v7, v8, v9 r4-6: v7, v8, v9 r7-9: ``` after this pr (there is 3 delete bitmap left): ``` [rowset_id]: [delete bitmap] r1-3: v6, new_v9 // new_v9 is agged by the previous v7, v8, v9 of r1-3 r4-6: new_v9 // new_v9 is agged by the previous v7, v8, v9 of r4-6 r7-9: ``` 1. agged when delete stale rowset path 2. removed when delete unused rowsets `save_meta` to store delete bitmap after remove unused rowsets related delete bitmap 1. agged when delete stale rowset path 2. removed when delete unused rowsets 1. agged when finish compaction 2. send `update_delete_bitmap` to ms to modify and remove pre rowsets delete bitmap None
…ap of pre rowsets when cu compaction (apache#49383) This PR reduce delete bitmap count of mow tables 1. when do cumulative compaction [start_rowset, end_rowset], which version is [start_version, end_version] 2. agg pre_rowsets'(version less than start_version) delete bitmap between [start_version, end_version] to end_version, 3. when all of the rowsets of [start_rowset, end_rowset] are deleted, delete pre rowsets' delete bitmap between [start_version, end_version). suppose the rowset and delete bitmap layout is: ``` [rowset_id]: [delete bitmap] r1-3: v6, v7, v8, v9 r4-6: v7, v8, v9 r7: v8, v9 r8: v9 r9: ``` if do cumulative compaction for {r7, r8, r9} before this pr, the delete bitmap layout is (there is 7 delete bitmap left): ``` [rowset_id]: [delete bitmap] r1-3: v6, v7, v8, v9 r4-6: v7, v8, v9 r7-9: ``` after this pr (there is 3 delete bitmap left): ``` [rowset_id]: [delete bitmap] r1-3: v6, new_v9 // new_v9 is agged by the previous v7, v8, v9 of r1-3 r4-6: new_v9 // new_v9 is agged by the previous v7, v8, v9 of r4-6 r7-9: ``` 1. agged when delete stale rowset path 2. removed when delete unused rowsets `save_meta` to store delete bitmap after remove unused rowsets related delete bitmap 1. agged when delete stale rowset path 2. removed when delete unused rowsets 1. agged when finish compaction 2. send `update_delete_bitmap` to ms to modify and remove pre rowsets delete bitmap None
What problem does this PR solve?
This PR reduce delete bitmap count of mow tables
Basic idea
One example
suppose the rowset and delete bitmap layout is:
if do cumulative compaction for {r7, r8, r9}
before this pr, the delete bitmap layout is (there is 7 delete bitmap left):
after this pr (there is 3 delete bitmap left):
The implementation of local mode
delete bitmap in BE memory
delete bitmap in BE local storage
save_metato store delete bitmap after remove unused rowsets related delete bitmapThe implementation of cloud mode
delete bitmap in BE memory
delete bitmap in Meta Service
update_delete_bitmapto ms to modify and remove pre rowsets delete bitmapRelease note
None
Check List (For Author)
Test
Behavior changed:
Does this need documentation?
Check List (For Reviewer who merge this PR)