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

commit 3165a7b2c731d56f4471056c1764c4365bfb31b5
Author: zhengyu <freeman.zhang1...@gmail.com>
AuthorDate: Fri Jun 14 09:25:58 2024 +0800

    [feature](cloud) support file cache only cache index pages (#36273)
    
    give user an option to only cache index pages instead of all data pages
    
    Signed-off-by: freemandealer <freeman.zhang1...@gmail.com>
---
 be/src/common/config.cpp                                | 2 ++
 be/src/common/config.h                                  | 2 ++
 be/src/olap/rowset/segment_v2/column_reader.cpp         | 4 +++-
 be/src/olap/rowset/segment_v2/indexed_column_reader.cpp | 3 ++-
 4 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/be/src/common/config.cpp b/be/src/common/config.cpp
index 5290acd01cb..984a4ce62d0 100644
--- a/be/src/common/config.cpp
+++ b/be/src/common/config.cpp
@@ -996,6 +996,8 @@ DEFINE_Bool(enable_file_cache, "false");
 // format: 
[{"path":"/path/to/file_cache","total_size":21474836480,"query_limit":10737418240},{"path":"/path/to/file_cache2","total_size":21474836480,"query_limit":10737418240}]
 DEFINE_String(file_cache_path, "");
 DEFINE_Int64(file_cache_each_block_size, "1048576"); // 1MB
+// only cache index pages (prerequisite: enable_file_cache = true)
+DEFINE_Bool(file_cache_index_only, "false");
 
 DEFINE_Bool(clear_file_cache, "false");
 DEFINE_Bool(enable_file_cache_query_limit, "false");
diff --git a/be/src/common/config.h b/be/src/common/config.h
index 785cdfe8be5..d3bed036be6 100644
--- a/be/src/common/config.h
+++ b/be/src/common/config.h
@@ -1042,6 +1042,8 @@ DECLARE_Bool(enable_file_cache);
 // format: 
[{"path":"/path/to/file_cache","total_size":21474836480,"query_limit":10737418240,"normal_percent":85,
 "disposable_percent":10, "index_percent":5}]
 DECLARE_String(file_cache_path);
 DECLARE_Int64(file_cache_each_block_size);
+// only cache index pages (prerequisite: enable_file_cache = true)
+DECLARE_Bool(file_cache_index_only);
 DECLARE_Bool(clear_file_cache);
 DECLARE_Bool(enable_file_cache_query_limit);
 DECLARE_Int32(file_cache_enter_disk_resource_limit_mode_percent);
diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp 
b/be/src/olap/rowset/segment_v2/column_reader.cpp
index 392917e0d83..7396bce1a55 100644
--- a/be/src/olap/rowset/segment_v2/column_reader.cpp
+++ b/be/src/olap/rowset/segment_v2/column_reader.cpp
@@ -342,9 +342,11 @@ Status ColumnReader::read_page(const 
ColumnIteratorOptions& iter_opts, const Pag
                                PageHandle* handle, Slice* page_body, 
PageFooterPB* footer,
                                BlockCompressionCodec* codec) const {
     iter_opts.sanity_check();
+    bool use_page_cache = iter_opts.use_page_cache &&
+                          (!config::file_cache_index_only || iter_opts.type == 
INDEX_PAGE);
     PageReadOptions opts {
             .verify_checksum = _opts.verify_checksum,
-            .use_page_cache = iter_opts.use_page_cache,
+            .use_page_cache = use_page_cache,
             .kept_in_memory = _opts.kept_in_memory,
             .type = iter_opts.type,
             .file_reader = iter_opts.file_reader,
diff --git a/be/src/olap/rowset/segment_v2/indexed_column_reader.cpp 
b/be/src/olap/rowset/segment_v2/indexed_column_reader.cpp
index 59251b5595d..94429920877 100644
--- a/be/src/olap/rowset/segment_v2/indexed_column_reader.cpp
+++ b/be/src/olap/rowset/segment_v2/indexed_column_reader.cpp
@@ -115,8 +115,9 @@ Status IndexedColumnReader::read_page(const PagePointer& 
pp, PageHandle* handle,
                                       PageFooterPB* footer, PageTypePB type,
                                       BlockCompressionCodec* codec, bool 
pre_decode) const {
     OlapReaderStatistics tmp_stats;
+    bool use_page_cache = _use_page_cache && (!config::file_cache_index_only 
|| type == INDEX_PAGE);
     PageReadOptions opts {
-            .use_page_cache = _use_page_cache,
+            .use_page_cache = use_page_cache,
             .kept_in_memory = _kept_in_memory,
             .pre_decode = pre_decode,
             .type = type,


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to