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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
