Add a db_id field to the virtual table related to automatic memory management.

This commit is contained in:
obdev
2024-02-27 06:48:37 +00:00
committed by ob-robot
parent e950dd7145
commit 0715f57e39
16 changed files with 124 additions and 13 deletions

View File

@ -235,6 +235,10 @@ int ObSqlWorkareaActive::fill_row(
ObCharset::get_default_collation(ObCharset::get_default_charset()));
break;
}
case DB_ID: {
cells[cell_idx].set_int(wa_active.database_id_);
break;
}
default: {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected column id", K(col_id));

View File

@ -74,6 +74,7 @@ private:
TEMPSEG_SIZE,
TENAND_ID, // OB_APP_MIN_COLUMN_ID + 15
POLICY,
DB_ID,
};
int fill_row(
uint64_t tenant_id,

View File

@ -255,6 +255,10 @@ int ObSqlWorkareaHistoryStat::fill_row(
ObCharset::get_default_collation(ObCharset::get_default_charset()));
break;
}
case DB_ID: {
cells[cell_idx].set_int(wa_stat.get_database_id());
break;
}
default: {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected column id", K(col_id));

View File

@ -76,6 +76,7 @@ private:
LAST_TEMPSEG_SIZE,
TENAND_ID, // OB_APP_MIN_COLUMN_ID + 18
POLICY,
DB_ID,
};
int fill_row(
uint64_t tenant_id,

View File

@ -2052,6 +2052,21 @@ int ObInnerTableSchema::all_virtual_sql_workarea_history_stat_schema(ObTableSche
false, //is_nullable
false); //is_autoincrement
}
if (OB_SUCC(ret)) {
ADD_COLUMN_SCHEMA("db_id", //column_name
++column_id, //column_id
0, //rowkey_id
0, //index_id
0, //part_key_pos
ObIntType, //column_type
CS_TYPE_INVALID, //column_collation_type
sizeof(int64_t), //column_length
-1, //column_precision
-1, //column_scale
false, //is_nullable
false); //is_autoincrement
}
if (OB_SUCC(ret)) {
table_schema.get_part_option().set_part_num(1);
table_schema.set_part_level(PARTITION_LEVEL_ONE);
@ -2361,6 +2376,21 @@ int ObInnerTableSchema::all_virtual_sql_workarea_active_schema(ObTableSchema &ta
false, //is_nullable
false); //is_autoincrement
}
if (OB_SUCC(ret)) {
ADD_COLUMN_SCHEMA("db_id", //column_name
++column_id, //column_id
0, //rowkey_id
0, //index_id
0, //part_key_pos
ObIntType, //column_type
CS_TYPE_INVALID, //column_collation_type
sizeof(int64_t), //column_length
-1, //column_precision
-1, //column_scale
false, //is_nullable
false); //is_autoincrement
}
if (OB_SUCC(ret)) {
table_schema.get_part_option().set_part_num(1);
table_schema.set_part_level(PARTITION_LEVEL_ONE);

View File

@ -2331,6 +2331,21 @@ int ObInnerTableSchema::all_virtual_sql_workarea_history_stat_ora_schema(ObTable
false, //is_nullable
false); //is_autoincrement
}
if (OB_SUCC(ret)) {
ADD_COLUMN_SCHEMA("DB_ID", //column_name
++column_id, //column_id
0, //rowkey_id
0, //index_id
0, //part_key_pos
ObNumberType, //column_type
CS_TYPE_INVALID, //column_collation_type
38, //column_length
38, //column_precision
0, //column_scale
false, //is_nullable
false); //is_autoincrement
}
if (OB_SUCC(ret)) {
table_schema.get_part_option().set_part_num(1);
table_schema.set_part_level(PARTITION_LEVEL_ONE);
@ -2640,6 +2655,21 @@ int ObInnerTableSchema::all_virtual_sql_workarea_active_ora_schema(ObTableSchema
false, //is_nullable
false); //is_autoincrement
}
if (OB_SUCC(ret)) {
ADD_COLUMN_SCHEMA("DB_ID", //column_name
++column_id, //column_id
0, //rowkey_id
0, //index_id
0, //part_key_pos
ObNumberType, //column_type
CS_TYPE_INVALID, //column_collation_type
38, //column_length
38, //column_precision
0, //column_scale
false, //is_nullable
false); //is_autoincrement
}
if (OB_SUCC(ret)) {
table_schema.get_part_option().set_part_num(1);
table_schema.set_part_level(PARTITION_LEVEL_ONE);

View File

@ -781,7 +781,7 @@ int ObInnerTableSchema::gv_sql_workarea_schema(ObTableSchema &table_schema)
table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
if (OB_SUCC(ret)) {
if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT CAST(NULL AS BINARY(8)) AS ADDRESS, CAST(NULL AS SIGNED) AS HASH_VALUE, SQL_ID, CAST(PLAN_ID AS SIGNED) AS CHILD_NUMBER, CAST(NULL AS BINARY(8)) AS WORKAREA_ADDRESS, OPERATION_TYPE, OPERATION_ID, POLICY, ESTIMATED_OPTIMAL_SIZE, ESTIMATED_ONEPASS_SIZE, LAST_MEMORY_USED, LAST_EXECUTION, LAST_DEGREE, TOTAL_EXECUTIONS, OPTIMAL_EXECUTIONS, ONEPASS_EXECUTIONS, MULTIPASSES_EXECUTIONS, ACTIVE_TIME, MAX_TEMPSEG_SIZE, LAST_TEMPSEG_SIZE, TENANT_ID AS CON_ID, SVR_IP, SVR_PORT FROM OCEANBASE.__ALL_VIRTUAL_SQL_WORKAREA_HISTORY_STAT )__"))) {
if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT CAST(NULL AS BINARY(8)) AS ADDRESS, CAST(NULL AS SIGNED) AS HASH_VALUE, DB_ID, SQL_ID, CAST(PLAN_ID AS SIGNED) AS CHILD_NUMBER, CAST(NULL AS BINARY(8)) AS WORKAREA_ADDRESS, OPERATION_TYPE, OPERATION_ID, POLICY, ESTIMATED_OPTIMAL_SIZE, ESTIMATED_ONEPASS_SIZE, LAST_MEMORY_USED, LAST_EXECUTION, LAST_DEGREE, TOTAL_EXECUTIONS, OPTIMAL_EXECUTIONS, ONEPASS_EXECUTIONS, MULTIPASSES_EXECUTIONS, ACTIVE_TIME, MAX_TEMPSEG_SIZE, LAST_TEMPSEG_SIZE, TENANT_ID AS CON_ID, SVR_IP, SVR_PORT FROM OCEANBASE.__ALL_VIRTUAL_SQL_WORKAREA_HISTORY_STAT )__"))) {
LOG_ERROR("fail to set view_definition", K(ret));
}
}
@ -881,7 +881,7 @@ int ObInnerTableSchema::gv_sql_workarea_active_schema(ObTableSchema &table_schem
table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
if (OB_SUCC(ret)) {
if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT CAST(NULL AS SIGNED) AS SQL_HASH_VALUE, SQL_ID, CAST(NULL AS DATE) AS SQL_EXEC_START, SQL_EXEC_ID, CAST(NULL AS BINARY(8)) AS WORKAREA_ADDRESS, OPERATION_TYPE, OPERATION_ID, POLICY, SID, CAST(NULL AS SIGNED) AS QCINST_ID, CAST(NULL AS SIGNED) AS QCSID, ACTIVE_TIME, WORK_AREA_SIZE, EXPECT_SIZE, ACTUAL_MEM_USED, MAX_MEM_USED, NUMBER_PASSES, TEMPSEG_SIZE, CAST(NULL AS CHAR(20)) AS TABLESPACE, CAST(NULL AS SIGNED) AS `SEGRFNO#`, CAST(NULL AS SIGNED) AS `SEGBLK#`, TENANT_ID AS CON_ID, SVR_IP, SVR_PORT FROM OCEANBASE.__ALL_VIRTUAL_SQL_WORKAREA_ACTIVE )__"))) {
if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT CAST(NULL AS SIGNED) AS SQL_HASH_VALUE, DB_ID, SQL_ID, CAST(NULL AS DATE) AS SQL_EXEC_START, SQL_EXEC_ID, CAST(NULL AS BINARY(8)) AS WORKAREA_ADDRESS, OPERATION_TYPE, OPERATION_ID, POLICY, SID, CAST(NULL AS SIGNED) AS QCINST_ID, CAST(NULL AS SIGNED) AS QCSID, ACTIVE_TIME, WORK_AREA_SIZE, EXPECT_SIZE, ACTUAL_MEM_USED, MAX_MEM_USED, NUMBER_PASSES, TEMPSEG_SIZE, CAST(NULL AS CHAR(20)) AS TABLESPACE, CAST(NULL AS SIGNED) AS `SEGRFNO#`, CAST(NULL AS SIGNED) AS `SEGBLK#`, TENANT_ID AS CON_ID, SVR_IP, SVR_PORT FROM OCEANBASE.__ALL_VIRTUAL_SQL_WORKAREA_ACTIVE )__"))) {
LOG_ERROR("fail to set view_definition", K(ret));
}
}

View File

@ -1910,7 +1910,7 @@ int ObInnerTableSchema::gv_sql_workarea_active_ora_schema(ObTableSchema &table_s
table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
if (OB_SUCC(ret)) {
if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT CAST(NULL AS NUMBER) AS SQL_HASH_VALUE, SQL_ID, CAST(NULL AS DATE) AS SQL_EXEC_START, CAST(SQL_EXEC_ID AS NUMBER) AS SQL_EXEC_ID, CAST(NULL AS RAW(8)) AS WORKAREA_ADDRESS, CAST(OPERATION_TYPE AS VARCHAR2(160)) AS OPERATION_TYPE, CAST(OPERATION_ID AS NUMBER) AS OPERATION_ID, CAST(POLICY AS VARCHAR2(24)) AS POLICY, CAST(SID AS NUMBER) AS SID, CAST(NULL AS NUMBER) AS QCINST_ID, CAST(NULL AS NUMBER) AS QCSID, CAST(ACTIVE_TIME AS NUMBER) AS ACTIVE_TIME, CAST(WORK_AREA_SIZE AS NUMBER) AS WORK_AREA_SIZE, CAST(EXPECT_SIZE AS NUMBER) AS EXPECT_SIZE, CAST(ACTUAL_MEM_USED AS NUMBER) AS ACTUAL_MEM_USED, CAST(MAX_MEM_USED AS NUMBER) AS MAX_MEM_USED, CAST(NUMBER_PASSES AS NUMBER) AS NUMBER_PASSES, CAST(TEMPSEG_SIZE AS NUMBER) AS TEMPSEG_SIZE, CAST(NULL AS VARCHAR2(128)) AS TABLESPACE, CAST(NULL AS NUMBER) AS "SEGRFNO#", CAST(NULL AS NUMBER) AS "SEGBLK#", CAST(TENANT_ID AS NUMBER) AS CON_ID, SVR_IP, SVR_PORT FROM SYS.ALL_VIRTUAL_SQL_WORKAREA_ACTIVE )__"))) {
if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT CAST(NULL AS NUMBER) AS SQL_HASH_VALUE, DB_ID, SQL_ID, CAST(NULL AS DATE) AS SQL_EXEC_START, CAST(SQL_EXEC_ID AS NUMBER) AS SQL_EXEC_ID, CAST(NULL AS RAW(8)) AS WORKAREA_ADDRESS, CAST(OPERATION_TYPE AS VARCHAR2(160)) AS OPERATION_TYPE, CAST(OPERATION_ID AS NUMBER) AS OPERATION_ID, CAST(POLICY AS VARCHAR2(24)) AS POLICY, CAST(SID AS NUMBER) AS SID, CAST(NULL AS NUMBER) AS QCINST_ID, CAST(NULL AS NUMBER) AS QCSID, CAST(ACTIVE_TIME AS NUMBER) AS ACTIVE_TIME, CAST(WORK_AREA_SIZE AS NUMBER) AS WORK_AREA_SIZE, CAST(EXPECT_SIZE AS NUMBER) AS EXPECT_SIZE, CAST(ACTUAL_MEM_USED AS NUMBER) AS ACTUAL_MEM_USED, CAST(MAX_MEM_USED AS NUMBER) AS MAX_MEM_USED, CAST(NUMBER_PASSES AS NUMBER) AS NUMBER_PASSES, CAST(TEMPSEG_SIZE AS NUMBER) AS TEMPSEG_SIZE, CAST(NULL AS VARCHAR2(128)) AS TABLESPACE, CAST(NULL AS NUMBER) AS "SEGRFNO#", CAST(NULL AS NUMBER) AS "SEGBLK#", CAST(TENANT_ID AS NUMBER) AS CON_ID, SVR_IP, SVR_PORT FROM SYS.ALL_VIRTUAL_SQL_WORKAREA_ACTIVE )__"))) {
LOG_ERROR("fail to set view_definition", K(ret));
}
}

View File

@ -210,7 +210,7 @@ int ObInnerTableSchema::gv_sql_workarea_ora_schema(ObTableSchema &table_schema)
table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset()));
if (OB_SUCC(ret)) {
if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT CAST(NULL AS RAW(8)) AS ADDRESS, CAST(NULL AS NUMBER) AS HASH_VALUE, SQL_ID, CAST(PLAN_ID AS NUMBER) AS CHILD_NUMBER, CAST(NULL AS RAW(8)) AS WORKAREA_ADDRESS, CAST(OPERATION_TYPE AS VARCHAR2(160)) AS OPERATION_TYPE, CAST(OPERATION_ID AS NUMBER) AS OPERATION_ID, CAST(POLICY AS VARCHAR2(40)) AS POLICY, CAST(ESTIMATED_OPTIMAL_SIZE AS NUMBER) AS ESTIMATED_OPTIMAL_SIZE, CAST(ESTIMATED_ONEPASS_SIZE AS NUMBER) AS ESTIMATED_ONEPASS_SIZE, CAST(LAST_MEMORY_USED AS NUMBER) AS LAST_MEMORY_USED, CAST(LAST_EXECUTION AS VARCHAR2(40)) AS LAST_EXECUTION, CAST(LAST_DEGREE AS NUMBER) AS LAST_DEGREE, CAST(TOTAL_EXECUTIONS AS NUMBER) AS TOTAL_EXECUTIONS, CAST(OPTIMAL_EXECUTIONS AS NUMBER) AS OPTIMAL_EXECUTIONS, CAST(ONEPASS_EXECUTIONS AS NUMBER) AS ONEPASS_EXECUTIONS, CAST(MULTIPASSES_EXECUTIONS AS NUMBER) AS MULTIPASSES_EXECUTIONS, CAST(ACTIVE_TIME AS NUMBER) AS ACTIVE_TIME, CAST(MAX_TEMPSEG_SIZE AS NUMBER) AS MAX_TEMPSEG_SIZE, CAST(LAST_TEMPSEG_SIZE AS NUMBER) AS LAST_TEMPSEG_SIZE, CAST(TENANT_ID AS NUMBER) AS CON_ID, SVR_IP, SVR_PORT FROM SYS.ALL_VIRTUAL_SQL_WORKAREA_HISTORY_STAT )__"))) {
if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT CAST(NULL AS RAW(8)) AS ADDRESS, CAST(NULL AS NUMBER) AS HASH_VALUE, DB_ID, SQL_ID, CAST(PLAN_ID AS NUMBER) AS CHILD_NUMBER, CAST(NULL AS RAW(8)) AS WORKAREA_ADDRESS, CAST(OPERATION_TYPE AS VARCHAR2(160)) AS OPERATION_TYPE, CAST(OPERATION_ID AS NUMBER) AS OPERATION_ID, CAST(POLICY AS VARCHAR2(40)) AS POLICY, CAST(ESTIMATED_OPTIMAL_SIZE AS NUMBER) AS ESTIMATED_OPTIMAL_SIZE, CAST(ESTIMATED_ONEPASS_SIZE AS NUMBER) AS ESTIMATED_ONEPASS_SIZE, CAST(LAST_MEMORY_USED AS NUMBER) AS LAST_MEMORY_USED, CAST(LAST_EXECUTION AS VARCHAR2(40)) AS LAST_EXECUTION, CAST(LAST_DEGREE AS NUMBER) AS LAST_DEGREE, CAST(TOTAL_EXECUTIONS AS NUMBER) AS TOTAL_EXECUTIONS, CAST(OPTIMAL_EXECUTIONS AS NUMBER) AS OPTIMAL_EXECUTIONS, CAST(ONEPASS_EXECUTIONS AS NUMBER) AS ONEPASS_EXECUTIONS, CAST(MULTIPASSES_EXECUTIONS AS NUMBER) AS MULTIPASSES_EXECUTIONS, CAST(ACTIVE_TIME AS NUMBER) AS ACTIVE_TIME, CAST(MAX_TEMPSEG_SIZE AS NUMBER) AS MAX_TEMPSEG_SIZE, CAST(LAST_TEMPSEG_SIZE AS NUMBER) AS LAST_TEMPSEG_SIZE, CAST(TENANT_ID AS NUMBER) AS CON_ID, SVR_IP, SVR_PORT FROM SYS.ALL_VIRTUAL_SQL_WORKAREA_HISTORY_STAT )__"))) {
LOG_ERROR("fail to set view_definition", K(ret));
}
}

View File

@ -10734,6 +10734,7 @@ def_table_schema(
('last_tempseg_size', 'int'),
('tenant_id', 'int'),
('policy', 'varchar:10'),
('db_id', 'int'),
],
partition_columns = ['svr_ip', 'svr_port'],
vtable_route_policy = 'distributed',
@ -10765,6 +10766,7 @@ def_table_schema(
('tempseg_size', 'int'),
('tenant_id', 'int'),
('policy', 'varchar:6'),
('db_id', 'int'),
],
partition_columns = ['svr_ip', 'svr_port'],
vtable_route_policy = 'distributed',
@ -16813,6 +16815,7 @@ def_table_schema(
SELECT
CAST(NULL AS BINARY(8)) AS ADDRESS,
CAST(NULL AS SIGNED) AS HASH_VALUE,
DB_ID,
SQL_ID,
CAST(PLAN_ID AS SIGNED) AS CHILD_NUMBER,
CAST(NULL AS BINARY(8)) AS WORKAREA_ADDRESS,
@ -16887,6 +16890,7 @@ def_table_schema(
view_definition = """
SELECT
CAST(NULL AS SIGNED) AS SQL_HASH_VALUE,
DB_ID,
SQL_ID,
CAST(NULL AS DATE) AS SQL_EXEC_START,
SQL_EXEC_ID,
@ -54010,6 +54014,7 @@ def_table_schema(
view_definition = """
SELECT
CAST(NULL AS NUMBER) AS SQL_HASH_VALUE,
DB_ID,
SQL_ID,
CAST(NULL AS DATE) AS SQL_EXEC_START,
CAST(SQL_EXEC_ID AS NUMBER) AS SQL_EXEC_ID,
@ -54308,6 +54313,7 @@ def_table_schema(
SELECT
CAST(NULL AS RAW(8)) AS ADDRESS,
CAST(NULL AS NUMBER) AS HASH_VALUE,
DB_ID,
SQL_ID,
CAST(PLAN_ID AS NUMBER) AS CHILD_NUMBER,
CAST(NULL AS RAW(8)) AS WORKAREA_ADDRESS,

View File

@ -66,6 +66,11 @@ uint64_t ObSqlWorkAreaProfile::get_session_id()
return session_id_;
}
uint64_t ObSqlWorkAreaProfile::get_db_id()
{
return db_id_;
}
int ObSqlWorkAreaProfile::set_exec_info(ObExecContext &exec_ctx)
{
int ret = OB_SUCCESS;
@ -82,6 +87,10 @@ int ObSqlWorkAreaProfile::set_exec_info(ObExecContext &exec_ctx)
sql_id_[OB_MAX_SQL_ID_LENGTH] = '\0';
}
}
ObSQLSessionInfo *sql_session = exec_ctx.get_my_session();
if (OB_NOT_NULL(sql_session)) {
db_id_ = sql_session->get_database_id();
}
return ret;
}
@ -737,6 +746,7 @@ int ObTenantSqlMemoryManager::new_and_fill_workarea_stat(
wa_stat->workarea_key_.set_sql_id(profile.get_sql_id());
wa_stat->workarea_key_.set_plan_id(profile.get_plan_id());
wa_stat->workarea_key_.set_operator_id(profile.get_operator_id());
wa_stat->workarea_key_.set_database_id(profile.get_db_id());
wa_stat->op_type_ = profile.get_operator_type();
if (OB_FAIL(fill_workarea_stat(*wa_stat, profile))) {
LOG_WARN("failed to fill workarea stat", K(ret));
@ -767,7 +777,8 @@ int ObTenantSqlMemoryManager::collect_workarea_stat(ObSqlWorkAreaProfile &profil
if (profile.has_exec_ctx()) {
ObSqlWorkAreaStat::WorkareaKey workarea_key(
profile.get_plan_id(),
profile.get_operator_id());
profile.get_operator_id(),
profile.get_db_id());
workarea_key.set_sql_id(profile.get_sql_id());
bool need_insert = false;
if (OB_FAIL(try_fill_workarea_stat(workarea_key, profile, need_insert))) {
@ -1320,6 +1331,7 @@ int ObTenantSqlMemoryManager::get_all_active_workarea(
profile_info.sql_exec_id_ = profile->get_exec_id();
profile_info.set_sql_id(profile->get_sql_id());
profile_info.session_id_ = profile->get_session_id();
profile_info.database_id_ = profile->get_db_id();
if (OB_FAIL(wa_actives.push_back(profile_info))) {
LOG_WARN("failed to push back profile", K(ret));
}

View File

@ -39,7 +39,7 @@ public:
random_id_(0), type_(type), op_type_(PHY_INVALID), op_id_(UINT64_MAX), exec_ctx_(nullptr),
min_size_(0), row_count_(0), input_size_(0), bucket_size_(0),
chunk_size_(0), cache_size_(-1), one_pass_size_(0), expect_size_(OB_INVALID_ID),
global_bound_size_(INT64_MAX), dop_(-1), plan_id_(-1), exec_id_(-1), sql_id_(),
global_bound_size_(INT64_MAX), dop_(-1), plan_id_(-1), exec_id_(-1), sql_id_(), db_id_(-1),
session_id_(-1), max_bound_(INT64_MAX), delta_size_(0), data_size_(0),
max_mem_used_(0), mem_used_(0),
pre_mem_used_(0), dumped_size_(0), data_ratio_(0.5), active_time_(0), number_pass_(0),
@ -145,6 +145,7 @@ public:
uint64_t get_exec_id();
const char* get_sql_id();
uint64_t get_session_id();
uint64_t get_db_id();
OB_INLINE bool need_profiled()
{
@ -180,6 +181,7 @@ private:
int64_t plan_id_;
int64_t exec_id_;
char sql_id_[common::OB_MAX_SQL_ID_LENGTH + 1];
uint64_t db_id_;
int64_t session_id_;
// 取 min(cache_size, global_bound_size)
// sort场景,在global_bound_size比较大情况下,sort理论上有data和extra内存,data应该是one-pass size
@ -219,14 +221,14 @@ public:
active_avg_time_(0), max_temp_size_(0), last_temp_size_(0), is_auto_policy_(false)
{}
public:
// key: (sql_id, plan_id, operator_id) 可以确认相同执行的统计
// key: (sql_id, plan_id, operator_id, database_id) 可以确认相同执行的统计
struct WorkareaKey {
WorkareaKey(uint64_t plan_id, uint64_t operator_id) :
plan_id_(plan_id), operator_id_(operator_id)
WorkareaKey(uint64_t plan_id, uint64_t operator_id, uint64_t database_id) :
plan_id_(plan_id), operator_id_(operator_id), database_id_(database_id)
{
sql_id_[0] = '\0';
}
WorkareaKey() : plan_id_(UINT64_MAX), operator_id_(UINT64_MAX)
WorkareaKey() : plan_id_(UINT64_MAX), operator_id_(UINT64_MAX), database_id_(UINT64_MAX)
{
sql_id_[0] = '\0';
}
@ -240,12 +242,14 @@ public:
}
void set_plan_id(uint64_t plan_id) { plan_id_ = plan_id; }
void set_operator_id(uint64_t op_id) { operator_id_ = op_id; }
void set_database_id(uint64_t database_id) { database_id_ = database_id; }
void assign(const WorkareaKey &other)
{
strncpy(sql_id_, other.sql_id_, common::OB_MAX_SQL_ID_LENGTH + 1);
plan_id_ = other.plan_id_;
operator_id_ = other.operator_id_;
database_id_ = other.database_id_;
}
WorkareaKey &operator=(const WorkareaKey &other)
{
@ -255,6 +259,7 @@ public:
int64_t hash() const
{
uint64_t val = common::murmurhash(&plan_id_, sizeof(plan_id_), 0);
val = common::murmurhash(&database_id_, sizeof(database_id_), val);
return common::murmurhash(&operator_id_, sizeof(operator_id_), val);
}
int hash(uint64_t &hash_val) const
@ -266,13 +271,15 @@ public:
bool operator==(const WorkareaKey &other) const
{
return plan_id_ == other.plan_id_ && operator_id_ == other.operator_id_
&& 0 == MEMCMP(sql_id_, other.sql_id_, strlen(sql_id_));
&& 0 == MEMCMP(sql_id_, other.sql_id_, strlen(sql_id_))
&& database_id_ == other.database_id_;
}
TO_STRING_KV(K_(sql_id), K_(plan_id), K_(operator_id));
TO_STRING_KV(K_(sql_id), K_(plan_id), K_(operator_id), K_(database_id));
public:
char sql_id_[common::OB_MAX_SQL_ID_LENGTH + 1]; // sql id
uint64_t plan_id_; // plan id
uint64_t operator_id_; // operator id
uint64_t database_id_; // database id
}; // end WorkareaKey
OB_INLINE void set_seqno(int64_t seqno) { seqno_ = seqno; }
@ -281,6 +288,7 @@ public:
OB_INLINE const char* get_sql_id() const { return workarea_key_.sql_id_; }
OB_INLINE uint64_t get_plan_id() const { return workarea_key_.plan_id_; }
OB_INLINE uint64_t get_operator_id() const { return workarea_key_.operator_id_; }
OB_INLINE uint64_t get_database_id() const { return workarea_key_.database_id_; }
OB_INLINE ObPhyOperatorType get_op_type() const { return op_type_; }
OB_INLINE int64_t get_est_cache_size() const { return est_cache_size_; }
OB_INLINE int64_t get_est_one_pass_size() const { return est_one_pass_size_; }
@ -331,7 +339,8 @@ class ObSqlWorkareaProfileInfo
{
public:
ObSqlWorkareaProfileInfo() :
profile_(ObSqlWorkAreaType::MAX_TYPE), plan_id_(0), sql_exec_id_(0), session_id_(0)
profile_(ObSqlWorkAreaType::MAX_TYPE), plan_id_(0),
sql_exec_id_(0), session_id_(0), database_id_(0)
{
sql_id_[0] = '\0';
}
@ -343,6 +352,7 @@ public:
plan_id_ = other.plan_id_;
sql_exec_id_ = other.sql_exec_id_;
session_id_ = other.session_id_;
database_id_ = other.database_id_;
}
ObSqlWorkareaProfileInfo &operator=(const ObSqlWorkareaProfileInfo &other)
@ -366,6 +376,7 @@ public:
uint64_t plan_id_;
uint64_t sql_exec_id_;
uint64_t session_id_;
uint64_t database_id_;
};
class ObSqlWorkAreaIntervalStat

View File

@ -1433,6 +1433,7 @@ desc oceanbase.GV$SQL_WORKAREA;
Field Type Null Key Default Extra
ADDRESS varbinary(8) NO
HASH_VALUE bigint(0) NO
DB_ID bigint(20) NO NULL
SQL_ID varchar(32) NO NULL
CHILD_NUMBER bigint(20) NO NULL
WORKAREA_ADDRESS varbinary(8) NO
@ -1461,6 +1462,7 @@ desc oceanbase.V$SQL_WORKAREA;
Field Type Null Key Default Extra
ADDRESS varbinary(8) NO
HASH_VALUE bigint(0) NO
DB_ID bigint(20) NO
SQL_ID varchar(32) NO
CHILD_NUMBER bigint(20) NO
WORKAREA_ADDRESS varbinary(8) NO
@ -1488,6 +1490,7 @@ cnt
desc oceanbase.GV$SQL_WORKAREA_ACTIVE;
Field Type Null Key Default Extra
SQL_HASH_VALUE bigint(0) NO
DB_ID bigint(20) NO NULL
SQL_ID varchar(32) NO NULL
SQL_EXEC_START date NO
SQL_EXEC_ID bigint(20) NO NULL
@ -1517,6 +1520,7 @@ cnt
desc oceanbase.V$SQL_WORKAREA_ACTIVE;
Field Type Null Key Default Extra
SQL_HASH_VALUE bigint(0) NO
DB_ID bigint(20) NO
SQL_ID varchar(32) NO
SQL_EXEC_START date NO
SQL_EXEC_ID bigint(20) NO

View File

@ -1434,6 +1434,7 @@ desc oceanbase.GV$SQL_WORKAREA;
Field Type Null Key Default Extra
ADDRESS varbinary(8) NO
HASH_VALUE bigint(0) NO
DB_ID bigint(20) NO NULL
SQL_ID varchar(32) NO NULL
CHILD_NUMBER bigint(20) NO NULL
WORKAREA_ADDRESS varbinary(8) NO
@ -1462,6 +1463,7 @@ desc oceanbase.V$SQL_WORKAREA;
Field Type Null Key Default Extra
ADDRESS varbinary(8) NO
HASH_VALUE bigint(0) NO
DB_ID bigint(20) NO
SQL_ID varchar(32) NO
CHILD_NUMBER bigint(20) NO
WORKAREA_ADDRESS varbinary(8) NO
@ -1489,6 +1491,7 @@ cnt
desc oceanbase.GV$SQL_WORKAREA_ACTIVE;
Field Type Null Key Default Extra
SQL_HASH_VALUE bigint(0) NO
DB_ID bigint(20) NO NULL
SQL_ID varchar(32) NO NULL
SQL_EXEC_START date NO
SQL_EXEC_ID bigint(20) NO NULL
@ -1518,6 +1521,7 @@ cnt
desc oceanbase.V$SQL_WORKAREA_ACTIVE;
Field Type Null Key Default Extra
SQL_HASH_VALUE bigint(0) NO
DB_ID bigint(20) NO
SQL_ID varchar(32) NO
SQL_EXEC_START date NO
SQL_EXEC_ID bigint(20) NO

View File

@ -1921,6 +1921,7 @@ max_tempseg_size bigint(20) NO NULL
last_tempseg_size bigint(20) NO NULL
tenant_id bigint(20) NO NULL
policy varchar(10) NO NULL
db_id bigint(20) NO NULL
select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all_virtual_sql_workarea_history_stat;
IF(count(*) >= 0, 1, 0)
1
@ -1946,6 +1947,7 @@ number_passes bigint(20) NO NULL
tempseg_size bigint(20) NO NULL
tenant_id bigint(20) NO NULL
policy varchar(6) NO NULL
db_id bigint(20) NO NULL
select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all_virtual_sql_workarea_active;
IF(count(*) >= 0, 1, 0)
1

View File

@ -4344,6 +4344,7 @@ max_tempseg_size bigint(20) NO NULL
last_tempseg_size bigint(20) NO NULL
tenant_id bigint(20) NO NULL
policy varchar(10) NO NULL
db_id bigint(20) NO NULL
select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all_virtual_sql_workarea_history_stat;
IF(count(*) >= 0, 1, 0)
1
@ -4369,6 +4370,7 @@ number_passes bigint(20) NO NULL
tempseg_size bigint(20) NO NULL
tenant_id bigint(20) NO NULL
policy varchar(6) NO NULL
db_id bigint(20) NO NULL
select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all_virtual_sql_workarea_active;
IF(count(*) >= 0, 1, 0)
1