This is an automated email from the ASF dual-hosted git repository. eldenmoon pushed a commit to branch cs_opt_version-3.1 in repository https://gitbox.apache.org/repos/asf/doris.git
commit 41964a53eea795d58b7490457d780a0fd1f154c7 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]
