From 2b8def2dce5ca8f4a35043f11d85ca88f2ee353f Mon Sep 17 00:00:00 2001 From: Charles0429 Date: Sat, 11 May 2024 10:00:44 +0000 Subject: [PATCH] add parallelsim in session_longops view --- deps/oblib/src/lib/container/ob_mask_set2.h | 12 ++++++------ .../ddl_task/ob_column_redefinition_task.cpp | 3 ++- .../ddl_task/ob_index_build_task.cpp | 6 ++++-- .../ddl_task/ob_table_redefinition_task.cpp | 6 ++++-- src/share/ob_ddl_common.cpp | 18 ++++++++++++++---- src/share/ob_ddl_common.h | 1 + 6 files changed, 31 insertions(+), 15 deletions(-) diff --git a/deps/oblib/src/lib/container/ob_mask_set2.h b/deps/oblib/src/lib/container/ob_mask_set2.h index 9f539cffa0..0c8c99e128 100644 --- a/deps/oblib/src/lib/container/ob_mask_set2.h +++ b/deps/oblib/src/lib/container/ob_mask_set2.h @@ -52,9 +52,9 @@ public: public: int mask(const T &key) { - int ret = OB_SUCCESS; - if (!is_inited_) { - ret = OB_NOT_INIT; + int ret = OB_SUCCESS; + if (!is_inited_) { + ret = OB_NOT_INIT; } else { bool hit = false; for (int64_t i = 0 ; OB_SUCCESS == ret && i < array_->count(); i++) { @@ -114,9 +114,9 @@ public: tmp_new_mask = true; } break; - } - } - if (OB_SUCCESS == ret) { + } + } + if (OB_SUCCESS == ret) { if (!hit) { ret = OB_MASK_SET_NO_NODE; } else { diff --git a/src/rootserver/ddl_task/ob_column_redefinition_task.cpp b/src/rootserver/ddl_task/ob_column_redefinition_task.cpp index 2eab62fa27..72419b3d63 100644 --- a/src/rootserver/ddl_task/ob_column_redefinition_task.cpp +++ b/src/rootserver/ddl_task/ob_column_redefinition_task.cpp @@ -728,7 +728,8 @@ int ObColumnRedefinitionTask::collect_longops_stat(ObLongopsValue &value) } else if (OB_FAIL(databuff_printf(stat_info_.message_, MAX_LONG_OPS_MESSAGE_LENGTH, pos, - "STATUS: REPLICA BUILD, ROW_SCANNED: %ld, ROW_INSERTED: %ld", + "STATUS: REPLICA BUILD, PARALLELISM: %ld, ROW_SCANNED: %ld, ROW_INSERTED: %ld", + ObDDLUtil::get_real_parallelism(parallelism_, false/*is mv refresh*/), row_scanned, row_inserted))) { LOG_WARN("failed to print", K(ret)); diff --git a/src/rootserver/ddl_task/ob_index_build_task.cpp b/src/rootserver/ddl_task/ob_index_build_task.cpp index 0424551919..e7a1ec83cc 100755 --- a/src/rootserver/ddl_task/ob_index_build_task.cpp +++ b/src/rootserver/ddl_task/ob_index_build_task.cpp @@ -1550,7 +1550,8 @@ int ObIndexBuildTask::collect_longops_stat(ObLongopsValue &value) if (OB_FAIL(databuff_printf(stat_info_.message_, MAX_LONG_OPS_MESSAGE_LENGTH, pos, - "STATUS: REPLICA BUILD, ROW_SCANNED: %ld, ROW_SORTED: %ld, ROW_INSERTED_INTO_TMP_FILE: %ld, ROW_INSERTED: %ld out of %ld column group rows", + "STATUS: REPLICA BUILD, PARALLELISM: %ld, ROW_SCANNED: %ld, ROW_SORTED: %ld, ROW_INSERTED_INTO_TMP_FILE: %ld, ROW_INSERTED: %ld out of %ld column group rows", + ObDDLUtil::get_real_parallelism(parallelism_, false/*is mv refresh*/), row_scanned, row_sorted, row_inserted_file, @@ -1562,7 +1563,8 @@ int ObIndexBuildTask::collect_longops_stat(ObLongopsValue &value) if (OB_FAIL(databuff_printf(stat_info_.message_, MAX_LONG_OPS_MESSAGE_LENGTH, pos, - "STATUS: REPLICA BUILD, ROW_SCANNED: %ld, ROW_SORTED: %ld, ROW_INSERTED: %ld", + "STATUS: REPLICA BUILD, PARALLELISM: %ld, ROW_SCANNED: %ld, ROW_SORTED: %ld, ROW_INSERTED: %ld", + ObDDLUtil::get_real_parallelism(parallelism_, false/*is mv refresh*/), row_scanned, row_sorted, row_inserted_file))) { diff --git a/src/rootserver/ddl_task/ob_table_redefinition_task.cpp b/src/rootserver/ddl_task/ob_table_redefinition_task.cpp index d0901375ce..070cf123c2 100755 --- a/src/rootserver/ddl_task/ob_table_redefinition_task.cpp +++ b/src/rootserver/ddl_task/ob_table_redefinition_task.cpp @@ -1286,7 +1286,8 @@ int ObTableRedefinitionTask::collect_longops_stat(ObLongopsValue &value) if (OB_FAIL(databuff_printf(stat_info_.message_, MAX_LONG_OPS_MESSAGE_LENGTH, pos, - "STATUS: REPLICA BUILD, ROW_SCANNED: %ld, ROW_SORTED: %ld, ROW_INSERTED_TMP_FILE: %ld, ROW_INSERTED: %ld out of %ld column group rows", + "STATUS: REPLICA BUILD, PARALLELISM: %ld, ROW_SCANNED: %ld, ROW_SORTED: %ld, ROW_INSERTED_TMP_FILE: %ld, ROW_INSERTED: %ld out of %ld column group rows", + ObDDLUtil::get_real_parallelism(parallelism_, alter_table_arg_.mview_refresh_info_.is_mview_complete_refresh_), row_scanned, row_sorted, row_inserted_file, @@ -1298,7 +1299,8 @@ int ObTableRedefinitionTask::collect_longops_stat(ObLongopsValue &value) if (OB_FAIL(databuff_printf(stat_info_.message_, MAX_LONG_OPS_MESSAGE_LENGTH, pos, - "STATUS: REPLICA BUILD, ROW_SCANNED: %ld, ROW_SORTED: %ld, ROW_INSERTED: %ld", + "STATUS: REPLICA BUILD, PARALLELISM: %ld, ROW_SCANNED: %ld, ROW_SORTED: %ld, ROW_INSERTED: %ld", + ObDDLUtil::get_real_parallelism(parallelism_, alter_table_arg_.mview_refresh_info_.is_mview_complete_refresh_), row_scanned, row_sorted, row_inserted_file))) { diff --git a/src/share/ob_ddl_common.cpp b/src/share/ob_ddl_common.cpp index 46dc64315b..ba063ebce6 100644 --- a/src/share/ob_ddl_common.cpp +++ b/src/share/ob_ddl_common.cpp @@ -810,8 +810,7 @@ int ObDDLUtil::generate_build_replica_sql( ObArray select_column_ids; ObArray order_column_ids; bool is_shadow_column = false; - int64_t real_parallelism = std::max(1L, parallelism); - real_parallelism = std::min(ObMacroDataSeq::MAX_PARALLEL_IDX + 1, real_parallelism); + const int64_t real_parallelism = ObDDLUtil::get_real_parallelism(parallelism, false/*is mv refresh*/); // get dest table column names if (dest_table_schema->is_spatial_index()) { if (OB_FAIL(ObDDLUtil::generate_spatial_index_column_names(*dest_table_schema, *source_table_schema, insert_column_names, @@ -1140,8 +1139,7 @@ int ObDDLUtil::generate_build_mview_replica_sql( } } if (OB_SUCC(ret)) { - int64_t real_parallelism = std::max(2L, parallelism); - real_parallelism = std::min(ObMacroDataSeq::MAX_PARALLEL_IDX + 1, real_parallelism); + const int64_t real_parallelism = ObDDLUtil::get_real_parallelism(parallelism, true/*is mv refresh*/); const ObString &select_sql_string = mview_table_schema->get_view_schema().get_view_definition_str(); if (is_oracle_mode) { if (OB_FAIL(sql_string.assign_fmt("INSERT /*+ append monitor enable_parallel_dml parallel(%ld) opt_param('ddl_execution_id', %ld) opt_param('ddl_task_id', %ld) use_px */ INTO \"%.*s\".\"%.*s\"" @@ -2021,6 +2019,18 @@ bool ObDDLUtil::use_idempotent_mode(const int64_t data_format_version, const sha return data_format_version >= DATA_VERSION_4_3_1_0 && task_type == DDL_MVIEW_COMPLETE_REFRESH; } +int64_t ObDDLUtil::get_real_parallelism(const int64_t parallelism, const bool is_mv_refresh) +{ + int64_t real_parallelism = 0L; + if (is_mv_refresh) { + real_parallelism = std::max(2L, parallelism); + } else { + real_parallelism = std::max(1L, parallelism); + } + real_parallelism = std::min(oceanbase::ObMacroDataSeq::MAX_PARALLEL_IDX + 1, real_parallelism); + return real_parallelism; +} + /****************** ObCheckTabletDataComplementOp *************/ int ObCheckTabletDataComplementOp::check_task_inner_sql_session_status( diff --git a/src/share/ob_ddl_common.h b/src/share/ob_ddl_common.h index 8f270052f1..2d41fe29ba 100644 --- a/src/share/ob_ddl_common.h +++ b/src/share/ob_ddl_common.h @@ -654,6 +654,7 @@ public: return res; } static bool use_idempotent_mode(const int64_t data_format_version, const share::ObDDLType task_type); + static int64_t get_real_parallelism(const int64_t parallelism, const bool is_mv_refresh); private: static int batch_check_tablet_checksum(