This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new a1c1cfce47 Add some comments for the feature mow (#11028)
a1c1cfce47 is described below
commit a1c1cfce478110aae7f6fe4e8c9fed78a3020671
Author: zhannngchen <[email protected]>
AuthorDate: Wed Jul 20 15:35:41 2022 +0800
Add some comments for the feature mow (#11028)
---
be/src/olap/primary_key_index.h | 2 ++
be/src/olap/tablet_meta.h | 8 ++++++--
.../main/java/org/apache/doris/common/util/PropertyAnalyzer.java | 6 ++++++
3 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/be/src/olap/primary_key_index.h b/be/src/olap/primary_key_index.h
index 2362a1f784..5645ba3c21 100644
--- a/be/src/olap/primary_key_index.h
+++ b/be/src/olap/primary_key_index.h
@@ -34,6 +34,8 @@ namespace doris {
// The primary key index is designed in a similar way like RocksDB
// Partitioned Index, which is created in the segment file when MemTable
flushes.
// Index is stored in multiple pages to leverage the IndexedColumnWriter.
+//
+// NOTE: for now, it's only used when unique key merge-on-write property
enabled.
class PrimaryKeyIndexBuilder {
public:
PrimaryKeyIndexBuilder(io::FileWriter* file_writer)
diff --git a/be/src/olap/tablet_meta.h b/be/src/olap/tablet_meta.h
index e32b966d1f..60713fa977 100644
--- a/be/src/olap/tablet_meta.h
+++ b/be/src/olap/tablet_meta.h
@@ -240,7 +240,10 @@ private:
// FIXME(cyx): Currently `cooldown_resource` is equivalent to
`storage_policy`.
io::ResourceId _cooldown_resource;
- // may be true iff unique keys model.
+ // For unique key data model, the feature Merge-on-Write will leverage a
primary
+ // key index and a delete-bitmap to mark duplicate keys as deleted in load
stage,
+ // which can avoid the merging cost in read stage, and accelerate the
aggregation
+ // query performance significantly.
bool _enable_unique_key_merge_on_write = false;
std::unique_ptr<DeleteBitmap> _delete_bitmap;
@@ -249,7 +252,8 @@ private:
/**
* Wraps multiple bitmaps for recording rows (row id) that are deleted or
- * overwritten.
+ * overwritten. For now, it's only used when unique key merge-on-write property
+ * enabled.
*
* RowsetId and SegmentId are for locating segment, Version here is a single
* uint32_t means that at which "version" of the load causes the delete or
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
b/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
index 84f8170316..76df8ad09d 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java
@@ -118,6 +118,12 @@ public class PropertyAnalyzer {
private static final double MAX_FPP = 0.05;
private static final double MIN_FPP = 0.0001;
+ // For unique key data model, the feature Merge-on-Write will leverage a
primary
+ // key index and a delete-bitmap to mark duplicate keys as deleted in load
stage,
+ // which can avoid the merging cost in read stage, and accelerate the
aggregation
+ // query performance significantly.
+ // For the detail design, see the
[DISP-018](https://cwiki.apache.org/confluence/
+ //
display/DORIS/DSIP-018%3A+Support+Merge-On-Write+implementation+for+UNIQUE+KEY+data+model)
public static final String ENABLE_UNIQUE_KEY_MERGE_ON_WRITE =
"enable_unique_key_merge_on_write";
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]