This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.0 by this push:
new 4a342ef421b branch-3.0: [Opt](mow) Add more logs for mow delete bitmap
#49752 (#50321)
4a342ef421b is described below
commit 4a342ef421b435dfef29237ef8b3f58cdad01f16
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue May 6 09:25:02 2025 +0800
branch-3.0: [Opt](mow) Add more logs for mow delete bitmap #49752 (#50321)
Cherry-picked from #49752
Co-authored-by: bobhan1 <[email protected]>
---
be/src/cloud/cloud_tablet.cpp | 6 ++++++
be/src/olap/rowset/beta_rowset_reader.cpp | 27 +++++++++++++++++----------
be/src/olap/tablet.cpp | 6 ++++++
be/src/olap/tablet_meta.cpp | 5 +++++
be/src/pipeline/exec/olap_scan_operator.cpp | 6 ++++++
be/src/vec/exec/scan/new_olap_scanner.cpp | 5 +++++
6 files changed, 45 insertions(+), 10 deletions(-)
diff --git a/be/src/cloud/cloud_tablet.cpp b/be/src/cloud/cloud_tablet.cpp
index c5b29cabd9e..dd43079ed9f 100644
--- a/be/src/cloud/cloud_tablet.cpp
+++ b/be/src/cloud/cloud_tablet.cpp
@@ -390,6 +390,9 @@ void CloudTablet::delete_rowsets(const
std::vector<RowsetSharedPtr>& to_delete,
}
uint64_t CloudTablet::delete_expired_stale_rowsets() {
+ if (config::enable_mow_verbose_log) {
+ LOG_INFO("begin delete_expired_stale_rowset for tablet={}",
tablet_id());
+ }
std::vector<RowsetSharedPtr> expired_rowsets;
// ATTN: trick, Use stale_rowsets to temporarily increase the reference
count of the rowset shared pointer in _stale_rs_version_map so that in the
recycle_cached_data function, it checks if the reference count is 2.
std::vector<RowsetSharedPtr> stale_rowsets;
@@ -441,6 +444,9 @@ uint64_t CloudTablet::delete_expired_stale_rowsets() {
}
_tablet_meta->delete_bitmap().remove_stale_delete_bitmap_from_queue(version_to_delete);
recycle_cached_data(expired_rowsets);
+ if (config::enable_mow_verbose_log) {
+ LOG_INFO("finish delete_expired_stale_rowset for tablet={}",
tablet_id());
+ }
return expired_rowsets.size();
}
diff --git a/be/src/olap/rowset/beta_rowset_reader.cpp
b/be/src/olap/rowset/beta_rowset_reader.cpp
index cd3994ec072..cca8da82637 100644
--- a/be/src/olap/rowset/beta_rowset_reader.cpp
+++ b/be/src/olap/rowset/beta_rowset_reader.cpp
@@ -154,17 +154,24 @@ Status
BetaRowsetReader::get_segment_iterators(RowsetReaderContext* read_context
// Take a delete-bitmap for each segment, the bitmap contains all deletes
// until the max read version, which is read_context->version.second
if (_read_context->delete_bitmap != nullptr) {
- SCOPED_RAW_TIMER(&_stats->delete_bitmap_get_agg_ns);
- RowsetId rowset_id = rowset()->rowset_id();
- for (uint32_t seg_id = 0; seg_id < rowset()->num_segments(); ++seg_id)
{
- auto d = _read_context->delete_bitmap->get_agg(
- {rowset_id, seg_id, _read_context->version.second});
- if (d->isEmpty()) {
- continue; // Empty delete bitmap for the segment
+ {
+ SCOPED_RAW_TIMER(&_stats->delete_bitmap_get_agg_ns);
+ RowsetId rowset_id = rowset()->rowset_id();
+ for (uint32_t seg_id = 0; seg_id < rowset()->num_segments();
++seg_id) {
+ auto d = _read_context->delete_bitmap->get_agg(
+ {rowset_id, seg_id, _read_context->version.second});
+ if (d->isEmpty()) {
+ continue; // Empty delete bitmap for the segment
+ }
+ VLOG_TRACE << "Get the delete bitmap for rowset: " <<
rowset_id.to_string()
+ << ", segment id:" << seg_id << ", size:" <<
d->cardinality();
+ _read_options.delete_bitmap.emplace(seg_id, std::move(d));
}
- VLOG_TRACE << "Get the delete bitmap for rowset: " <<
rowset_id.to_string()
- << ", segment id:" << seg_id << ", size:" <<
d->cardinality();
- _read_options.delete_bitmap.emplace(seg_id, std::move(d));
+ }
+ if (config::enable_mow_verbose_log) {
+ LOG_INFO("get aggregated delete bitmap for rowset={}, tablet={},
cost={}ns",
+ rowset()->rowset_id().to_string(),
rowset()->rowset_meta()->tablet_id(),
+ _stats->delete_bitmap_get_agg_ns);
}
}
diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp
index 958dcb8ce13..f3d1917e66a 100644
--- a/be/src/olap/tablet.cpp
+++ b/be/src/olap/tablet.cpp
@@ -697,6 +697,9 @@ void Tablet::_delete_stale_rowset_by_version(const Version&
version) {
}
void Tablet::delete_expired_stale_rowset() {
+ if (config::enable_mow_verbose_log) {
+ LOG_INFO("begin delete_expired_stale_rowset for tablet={}",
tablet_id());
+ }
int64_t now = UnixSeconds();
// hold write lock while processing stable rowset
{
@@ -855,6 +858,9 @@ void Tablet::delete_expired_stale_rowset() {
save_meta();
}
#endif
+ if (config::enable_mow_verbose_log) {
+ LOG_INFO("finish delete_expired_stale_rowset for tablet={}",
tablet_id());
+ }
}
Status Tablet::capture_consistent_versions_unlocked(const Version&
spec_version,
diff --git a/be/src/olap/tablet_meta.cpp b/be/src/olap/tablet_meta.cpp
index 165ccb303d6..5516196641d 100644
--- a/be/src/olap/tablet_meta.cpp
+++ b/be/src/olap/tablet_meta.cpp
@@ -953,6 +953,11 @@ void TabletMeta::delete_stale_rs_meta_by_version(const
Version& version) {
{(*it)->rowset_id(), UINT32_MAX, 0});
rowset_cache_version_size =
delete_bitmap().remove_rowset_cache_version((*it)->rowset_id());
+ if (config::enable_mow_verbose_log) {
+ LOG_INFO(
+ "delete stale rowset's delete bitmap. tablet={},
version={}, rowset={}",
+ tablet_id(), version.to_string(),
(*it)->rowset_id().to_string());
+ }
}
it = _stale_rs_metas.erase(it);
} else {
diff --git a/be/src/pipeline/exec/olap_scan_operator.cpp
b/be/src/pipeline/exec/olap_scan_operator.cpp
index 17560cb0184..ad4892ef513 100644
--- a/be/src/pipeline/exec/olap_scan_operator.cpp
+++ b/be/src/pipeline/exec/olap_scan_operator.cpp
@@ -505,6 +505,12 @@ Status OlapScanLocalState::hold_tablets() {
if (!PipelineXLocalState<>::_state->skip_delete_predicate()) {
_read_sources[i].fill_delete_predicates();
}
+ if (config::enable_mow_verbose_log &&
+ _tablets[i].tablet->enable_unique_key_merge_on_write()) {
+ LOG_INFO("finish capture_rs_readers for tablet={}, query_id={}",
+ _tablets[i].tablet->tablet_id(),
+ print_id(PipelineXLocalState<>::_state->query_id()));
+ }
}
timer.stop();
double cost_secs = static_cast<double>(timer.elapsed_time()) /
NANOS_PER_SEC;
diff --git a/be/src/vec/exec/scan/new_olap_scanner.cpp
b/be/src/vec/exec/scan/new_olap_scanner.cpp
index ac0701f21fa..18b3571299f 100644
--- a/be/src/vec/exec/scan/new_olap_scanner.cpp
+++ b/be/src/vec/exec/scan/new_olap_scanner.cpp
@@ -199,6 +199,11 @@ Status NewOlapScanner::init() {
LOG(WARNING) << "fail to init reader.res=" << st;
return st;
}
+ if (config::enable_mow_verbose_log &&
tablet->enable_unique_key_merge_on_write()) {
+ LOG_INFO("finish capture_rs_readers for tablet={},
query_id={}",
+ tablet->tablet_id(), print_id(_state->query_id()));
+ }
+
if (!_state->skip_delete_predicate()) {
read_source.fill_delete_predicates();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]