Add a db_id field to the virtual table related to automatic memory management.
This commit is contained in:
		| @ -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)); | ||||
|  | ||||
| @ -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, | ||||
|  | ||||
| @ -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)); | ||||
|  | ||||
| @ -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, | ||||
|  | ||||
| @ -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); | ||||
|  | ||||
| @ -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); | ||||
|  | ||||
| @ -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)); | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @ -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)); | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @ -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)); | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @ -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, | ||||
|  | ||||
| @ -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)); | ||||
|         } | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 obdev
					obdev