You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2023/04/19 13:34:45 UTC
[doris] 19/36: [fix](merge-on-write) the mow keyset check is quite slow when loading large data set, remove it from release version (#18750)
This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-2.0-alpha
in repository https://gitbox.apache.org/repos/asf/doris.git
commit f28944d9fea3378c54c90c4af07e6a051c13fec1
Author: zhannngchen <48...@users.noreply.github.com>
AuthorDate: Tue Apr 18 09:51:25 2023 +0800
[fix](merge-on-write) the mow keyset check is quite slow when loading large data set, remove it from release version (#18750)
---
be/src/olap/rowset/beta_rowset_writer.cpp | 2 ++
be/src/olap/rowset/segment_v2/segment_writer.cpp | 4 ++++
be/src/olap/tablet.cpp | 2 +-
3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/be/src/olap/rowset/beta_rowset_writer.cpp b/be/src/olap/rowset/beta_rowset_writer.cpp
index 3b7bd5490f..8b9b04a82c 100644
--- a/be/src/olap/rowset/beta_rowset_writer.cpp
+++ b/be/src/olap/rowset/beta_rowset_writer.cpp
@@ -610,10 +610,12 @@ void BetaRowsetWriter::_build_rowset_meta(std::shared_ptr<RowsetMeta> rowset_met
total_data_size += itr.second.data_size;
total_index_size += itr.second.index_size;
segments_encoded_key_bounds.push_back(itr.second.key_bounds);
+#ifndef NDEBUG
if (_context.enable_unique_key_merge_on_write) {
DCHECK(itr.second.key_set.get() != nullptr);
key_set.insert(itr.second.key_set->begin(), itr.second.key_set->end());
}
+#endif
}
}
_num_mow_keys = key_set.size();
diff --git a/be/src/olap/rowset/segment_v2/segment_writer.cpp b/be/src/olap/rowset/segment_v2/segment_writer.cpp
index 32787a29f4..3363f71cde 100644
--- a/be/src/olap/rowset/segment_v2/segment_writer.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_writer.cpp
@@ -219,7 +219,9 @@ Status SegmentWriter::init(const std::vector<uint32_t>& col_ids, bool has_key,
_primary_key_index_builder.reset(
new PrimaryKeyIndexBuilder(_file_writer, seq_col_length));
RETURN_IF_ERROR(_primary_key_index_builder->init());
+#ifndef NDEBUG
_key_set.reset(new std::unordered_set<std::string>());
+#endif
} else {
_short_key_index_builder.reset(
new ShortKeyIndexBuilder(_segment_id, _opts.num_rows_per_block));
@@ -327,8 +329,10 @@ Status SegmentWriter::append_block(const vectorized::Block* block, size_t row_po
// create primary indexes
for (size_t pos = 0; pos < num_rows; pos++) {
std::string key = _full_encode_keys(key_columns, pos);
+#ifndef NDEBUG
DCHECK(_key_set.get() != nullptr);
_key_set->insert(key);
+#endif
if (_tablet_schema->has_sequence_col()) {
_encode_seq_column(seq_column, pos, &key);
}
diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp
index 8abe60c80c..76d203333c 100644
--- a/be/src/olap/tablet.cpp
+++ b/be/src/olap/tablet.cpp
@@ -2655,7 +2655,7 @@ Status Tablet::update_delete_bitmap(const RowsetSharedPtr& rowset, const TabletT
RETURN_IF_ERROR(calc_delete_bitmap(rowset->rowset_id(), segments, &rowset_ids_to_add,
delete_bitmap, cur_version - 1, true));
- // Check the delete_bitmap correctness.
+ // Check the delete_bitmap correctness, now the check is only enabled in DEBUG env.
if (load_info->num_keys != 0) {
DeleteBitmap rs_bm(tablet_id());
delete_bitmap->subset({rowset->rowset_id(), 0, 0},
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org