[CP] Split prepare stmt memory to tenants

This commit is contained in:
obdev
2023-07-13 05:18:17 +00:00
committed by ob-robot
parent 58d0d34e2c
commit 91889593fd
7 changed files with 24 additions and 21 deletions

View File

@ -23,11 +23,10 @@ template<int64_t MAX_RESERVE_SIZE = 0>
class ObReserveArenaAllocator : public ObIAllocator
{
public:
ObReserveArenaAllocator(const lib::ObLabel &label,
const int64_t page_size = OB_MALLOC_NORMAL_BLOCK_SIZE,
int64_t tenant_id = OB_SERVER_TENANT_ID)
ObReserveArenaAllocator(const lib::ObMemAttr &attr,
const int64_t page_size = OB_MALLOC_NORMAL_BLOCK_SIZE)
: pos_(0),
allocator_(label, page_size, tenant_id)
allocator_(attr, page_size)
{
OB_ASSERT(MAX_RESERVE_SIZE >= 0);
}

View File

@ -314,7 +314,7 @@ typedef common::ObSEArray<bool, 16> ParamCastArray;
class ObPsSessionInfo
{
public:
ObPsSessionInfo(const int64_t num_of_params) :
ObPsSessionInfo(const int64_t tenant_id, const int64_t num_of_params) :
stmt_id_(common::OB_INVALID_STMT_ID),
stmt_type_(stmt::T_NONE),
num_of_params_(num_of_params),
@ -323,6 +323,8 @@ public:
inner_stmt_id_(0),
num_of_returning_into_(common::OB_INVALID_STMT_ID) // num_of_returning_into_ init as -1
{
param_types_.set_attr(ObMemAttr(tenant_id, "ParamTypes"));
param_type_infos_.set_attr(ObMemAttr(tenant_id, "ParamTypesInfo"));
param_types_.reserve(num_of_params_);
}
//{ param_types_.set_label(common::ObModIds::OB_PS_SESSION_INFO_ARRAY); }

View File

@ -81,15 +81,15 @@ ObBasicSessionInfo::ObBasicSessionInfo(const uint64_t tenant_id)
sess_ref_seq_(0),
block_allocator_(SMALL_BLOCK_SIZE, common::OB_MALLOC_NORMAL_BLOCK_SIZE - 32,
//这里减32是为了适配ObMalloc对齐规则, 防止超8k的内存分配
ObMalloc(ObModIds::OB_SQL_SESSION_SBLOCK)),
ObMalloc(lib::ObMemAttr(orig_tenant_id_, ObModIds::OB_SQL_SESSION_SBLOCK))),
ps_session_info_allocator_(sizeof(ObPsSessionInfo), common::OB_MALLOC_NORMAL_BLOCK_SIZE - 32,
//这里减32是为了适配ObMalloc对齐规则, 防止超8k的内存分配
ObMalloc("PsSessionInfo")),
ObMalloc(lib::ObMemAttr(orig_tenant_id_, "PsSessionInfo"))),
cursor_info_allocator_(sizeof(pl::ObDbmsCursorInfo), common::OB_MALLOC_NORMAL_BLOCK_SIZE - 32,
ObMalloc("SessCursorInfo")),
ObMalloc(lib::ObMemAttr(orig_tenant_id_, "SessCursorInfo"))),
package_info_allocator_(sizeof(pl::ObPLPackageState), common::OB_MALLOC_NORMAL_BLOCK_SIZE - 32,
ObMalloc("SessPackageInfo")),
name_pool_(ObModIds::OB_SQL_SESSION, OB_MALLOC_NORMAL_BLOCK_SIZE),
ObMalloc(lib::ObMemAttr(orig_tenant_id_, "SessPackageInfo"))),
name_pool_(lib::ObMemAttr(orig_tenant_id_, ObModIds::OB_SQL_SESSION), OB_MALLOC_NORMAL_BLOCK_SIZE),
trans_flags_(),
sql_scope_flags_(),
need_reset_package_(false),
@ -119,8 +119,8 @@ ObBasicSessionInfo::ObBasicSessionInfo(const uint64_t tenant_id)
client_mode_(OB_MIN_CLIENT_MODE),
changed_sys_vars_(),
changed_user_vars_(),
changed_var_pool_(ObModIds::OB_SQL_SESSION, OB_MALLOC_NORMAL_BLOCK_SIZE),
extra_info_allocator_(ObModIds::OB_SQL_SESSION, OB_MALLOC_NORMAL_BLOCK_SIZE),
changed_var_pool_(ObMemAttr(orig_tenant_id_, ObModIds::OB_SQL_SESSION), OB_MALLOC_NORMAL_BLOCK_SIZE),
extra_info_allocator_(ObMemAttr(orig_tenant_id_, ObModIds::OB_SQL_SESSION), OB_MALLOC_NORMAL_BLOCK_SIZE),
is_database_changed_(false),
feedback_manager_(),
trans_spec_status_(TRANS_SPEC_NOT_SET),

View File

@ -1154,7 +1154,7 @@ int ObSQLSessionInfo::prepare_ps_stmt(const ObPsStmtId inner_stmt_id,
ret = OB_ERR_UNEXPECTED;
LOG_WARN("stmt info is null", K(ret), K(stmt_info));
} else {
session_info = new (buf) ObPsSessionInfo(stmt_info->get_num_of_param());
session_info = new (buf) ObPsSessionInfo(orig_tenant_id_, stmt_info->get_num_of_param());
session_info->set_stmt_id(client_stmt_id);
session_info->set_stmt_type(stmt_info->get_stmt_type());
session_info->set_ps_stmt_checksum(stmt_info->get_ps_stmt_checksum());

View File

@ -1247,7 +1247,8 @@ private:
if (OB_UNLIKELY(!ps_session_info_map_.created())) {
ret = ps_session_info_map_.create(common::hash::cal_next_prime(PS_BUCKET_NUM),
common::ObModIds::OB_HASH_BUCKET_PS_SESSION_INFO,
common::ObModIds::OB_HASH_NODE_PS_SESSION_INFO);
common::ObModIds::OB_HASH_NODE_PS_SESSION_INFO,
orig_tenant_id_);
}
return ret;
}
@ -1262,7 +1263,8 @@ private:
if (OB_UNLIKELY(!ps_name_id_map_.created())) {
ret = ps_name_id_map_.create(common::hash::cal_next_prime(PS_BUCKET_NUM),
common::ObModIds::OB_HASH_BUCKET_PS_SESSION_INFO,
common::ObModIds::OB_HASH_NODE_PS_SESSION_INFO);
common::ObModIds::OB_HASH_NODE_PS_SESSION_INFO,
orig_tenant_id_);
}
return ret;
}

View File

@ -71,8 +71,8 @@ int ObRowsInfo::ExistHelper::init(const ObRelativeTable &table,
ObRowsInfo::ObRowsInfo()
: scan_mem_allocator_(common::ObModIds::OB_STORE_ROW_EXISTER, OB_MALLOC_NORMAL_BLOCK_SIZE, MTL_ID()),
key_allocator_(common::ObModIds::OB_STORE_ROW_EXISTER, OB_MALLOC_NORMAL_BLOCK_SIZE, MTL_ID()),
: scan_mem_allocator_(ObMemAttr(MTL_ID(), common::ObModIds::OB_STORE_ROW_EXISTER), OB_MALLOC_NORMAL_BLOCK_SIZE),
key_allocator_(ObMemAttr(MTL_ID(), common::ObModIds::OB_STORE_ROW_EXISTER), OB_MALLOC_NORMAL_BLOCK_SIZE),
rowkeys_(),
rows_(nullptr),
exist_helper_(),

View File

@ -36,7 +36,7 @@ public:
ObReserveArenaAllocator<1024> test_allocator_;
};
TestReserveArenaAllocator::TestReserveArenaAllocator():
test_allocator_(ObModIds::OB_STORE_ROW_EXISTER, OB_MALLOC_NORMAL_BLOCK_SIZE, 500)
test_allocator_(ObMemAttr(500, ObModIds::OB_STORE_ROW_EXISTER), OB_MALLOC_NORMAL_BLOCK_SIZE)
{
}