This is an automated email from the ASF dual-hosted git repository.
gavinchou pushed a commit to branch cs_opt_version-3.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/cs_opt_version-3.1 by this
push:
new 07d648e2730 (cs_opt_3.1): [fix](cache stat) add builder stat to
scanner (#56165) (#57743)
07d648e2730 is described below
commit 07d648e27307a24ae4897729b980c661962b0be9
Author: bobhan1 <[email protected]>
AuthorDate: Thu Nov 6 15:51:08 2025 +0800
(cs_opt_3.1): [fix](cache stat) add builder stat to scanner (#56165)
(#57743)
---
be/src/olap/parallel_scanner_builder.cpp | 3 ++-
be/src/olap/parallel_scanner_builder.h | 3 +++
be/src/pipeline/exec/olap_scan_operator.cpp | 11 +++++++++++
3 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/be/src/olap/parallel_scanner_builder.cpp
b/be/src/olap/parallel_scanner_builder.cpp
index 424d6c64d68..81ef4d92e37 100644
--- a/be/src/olap/parallel_scanner_builder.cpp
+++ b/be/src/olap/parallel_scanner_builder.cpp
@@ -191,7 +191,8 @@ Status ParallelScannerBuilder::_load() {
[esc = enable_segment_cache, rowset, &bmtx, p =
std::move(prom), this] {
SegmentCacheHandle sch;
auto task_st =
SegmentLoader::instance()->load_segments(
- std::dynamic_pointer_cast<BetaRowset>(rowset),
&sch, esc, false);
+ std::dynamic_pointer_cast<BetaRowset>(rowset),
&sch, esc, false,
+ &_builder_stats);
Defer defer([p, &task_st] { p->set_value(task_st); });
if (!task_st.ok()) return;
diff --git a/be/src/olap/parallel_scanner_builder.h
b/be/src/olap/parallel_scanner_builder.h
index a746ff5ba5d..05c561ae338 100644
--- a/be/src/olap/parallel_scanner_builder.h
+++ b/be/src/olap/parallel_scanner_builder.h
@@ -64,6 +64,8 @@ public:
void set_min_rows_per_scanner(int64_t size) { _min_rows_per_scanner =
size; }
+ const OlapReaderStatistics* builder_stats() const { return
&_builder_stats; }
+
private:
Status _load();
@@ -88,6 +90,7 @@ private:
std::map<RowsetId, std::vector<size_t>> _all_segments_rows;
std::shared_ptr<RuntimeProfile> _scanner_profile;
+ OlapReaderStatistics _builder_stats;
RuntimeState* _state;
int64_t _limit;
bool _is_dup_mow_key;
diff --git a/be/src/pipeline/exec/olap_scan_operator.cpp
b/be/src/pipeline/exec/olap_scan_operator.cpp
index 64437641d4e..3264c1b5f6f 100644
--- a/be/src/pipeline/exec/olap_scan_operator.cpp
+++ b/be/src/pipeline/exec/olap_scan_operator.cpp
@@ -28,6 +28,7 @@
#include "cloud/cloud_tablet_hotspot.h"
#include "cloud/config.h"
#include "common/config.h"
+#include "io/cache/block_file_cache_profile.h"
#include "olap/parallel_scanner_builder.h"
#include "olap/storage_engine.h"
#include "olap/tablet_manager.h"
@@ -402,6 +403,16 @@ Status
OlapScanLocalState::_init_scanners(std::list<vectorized::VScannerSPtr>* s
auto* olap_scanner =
assert_cast<vectorized::NewOlapScanner*>(scanner.get());
RETURN_IF_ERROR(olap_scanner->prepare(state(), _conjuncts));
}
+
+ const OlapReaderStatistics* stats = scanner_builder.builder_stats();
+ io::FileCacheProfileReporter cache_profile(_segment_profile.get());
+ cache_profile.update(&stats->file_cache_stats);
+
+ DorisMetrics::instance()->query_scan_bytes_from_local->increment(
+ stats->file_cache_stats.bytes_read_from_local);
+ DorisMetrics::instance()->query_scan_bytes_from_remote->increment(
+ stats->file_cache_stats.bytes_read_from_remote);
+
return Status::OK();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]