From 35bec7663922e8a5401ca0a79916829386ecebf6 Mon Sep 17 00:00:00 2001 From: obdev Date: Fri, 9 Feb 2024 06:49:58 +0000 Subject: [PATCH] [OPT] opt lob manager buffer usage --- src/storage/lob/ob_lob_manager.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/storage/lob/ob_lob_manager.cpp b/src/storage/lob/ob_lob_manager.cpp index 9fe462a5a..2f69ee21e 100644 --- a/src/storage/lob/ob_lob_manager.cpp +++ b/src/storage/lob/ob_lob_manager.cpp @@ -1345,7 +1345,7 @@ int ObLobManager::append( } // prepare write buffer ObString write_buffer; - int64_t buf_len = ObLobMetaUtil::LOB_OPER_PIECE_DATA_SIZE; + int64_t buf_len = OB_MIN(ObLobMetaUtil::LOB_OPER_PIECE_DATA_SIZE, append_lob_len); char *buf = nullptr; if (OB_SUCC(ret)) { buf = reinterpret_cast(param.allocator_->alloc(buf_len)); @@ -1444,7 +1444,7 @@ int ObLobManager::append( } else { // prepare read buffer ObString read_buffer; - uint64_t read_buff_size = LOB_READ_BUFFER_LEN; + uint64_t read_buff_size = OB_MIN(LOB_READ_BUFFER_LEN, read_param.byte_size_); char *read_buff = static_cast(param.allocator_->alloc(read_buff_size)); if (OB_ISNULL(read_buff)) { ret = OB_ALLOCATE_MEMORY_FAILED; @@ -1704,7 +1704,7 @@ int ObLobManager::append(ObLobAccessParam& param, ObLobLocatorV2& lob, ObLobMeta } // prepare read buffer ObString read_buffer; - uint64_t read_buff_size = LOB_READ_BUFFER_LEN; + uint64_t read_buff_size = OB_MIN(LOB_READ_BUFFER_LEN, append_lob_len); char *read_buff = static_cast(param.allocator_->alloc(read_buff_size)); if (OB_ISNULL(read_buff)) { ret = OB_ALLOCATE_MEMORY_FAILED; @@ -2389,7 +2389,7 @@ int ObLobManager::write_inrow(ObLobAccessParam& param, ObLobLocatorV2& lob, uint } else { // prepare read buffer ObString read_buffer; - uint64_t read_buff_size = LOB_READ_BUFFER_LEN; + uint64_t read_buff_size = OB_MIN(LOB_READ_BUFFER_LEN, read_param.byte_size_); char *read_buff = static_cast(param.allocator_->alloc(read_buff_size)); if (OB_ISNULL(read_buff)) { ret = OB_ALLOCATE_MEMORY_FAILED; @@ -2677,7 +2677,7 @@ int ObLobManager::write_outrow(ObLobAccessParam& param, ObLobLocatorV2& lob, uin } else { // prepare read buffer ObString read_buffer; - uint64_t read_buff_size = LOB_READ_BUFFER_LEN; + uint64_t read_buff_size = OB_MIN(LOB_READ_BUFFER_LEN, read_param.byte_size_);; char *read_buff = static_cast(param.allocator_->alloc(read_buff_size)); if (OB_ISNULL(read_buff)) { ret = OB_ALLOCATE_MEMORY_FAILED; @@ -2796,7 +2796,7 @@ int ObLobManager::write(ObLobAccessParam& param, ObString& data) ObLobQueryIter *iter = nullptr; // prepare read buffer ObString read_buffer; - uint64_t read_buff_size = LOB_READ_BUFFER_LEN; + uint64_t read_buff_size = ObLobMetaUtil::LOB_OPER_PIECE_DATA_SIZE; char *read_buff = static_cast(param.allocator_->alloc(read_buff_size)); if (OB_ISNULL(read_buff)) { ret = OB_ALLOCATE_MEMORY_FAILED; @@ -3601,7 +3601,7 @@ int ObLobQueryIter::open(ObLobAccessParam ¶m, ObLobCtx& lob_ctx) } else if (OB_FAIL(lob_ctx.lob_meta_mngr_->scan(param, meta_iter_))) { LOG_WARN("open meta iter failed."); } else { - last_data_buf_len_ = ObLobMetaUtil::LOB_OPER_PIECE_DATA_SIZE; + last_data_buf_len_ = OB_MIN(ObLobMetaUtil::LOB_OPER_PIECE_DATA_SIZE, param.byte_size_); last_data_ptr_ = reinterpret_cast(param.allocator_->alloc(last_data_buf_len_)); if (OB_ISNULL(last_data_ptr_)) { ret = OB_ALLOCATE_MEMORY_FAILED;