diff --git a/src/rootserver/ob_global_index_builder.cpp b/src/rootserver/ob_global_index_builder.cpp index f43f46dd231e2adc8953a1230a996b5bf2eb4b2a..0117d9d68015fc93c4d3e82eac3c1dc97e3948f0 100644 --- a/src/rootserver/ob_global_index_builder.cpp +++ b/src/rootserver/ob_global_index_builder.cpp @@ -1272,6 +1272,7 @@ int ObGlobalIndexBuilder::do_build_single_replica( ObGlobalIndexTask* task, const share::schema::ObTableSchema* index_schema, const int64_t snapshot) { int ret = OB_SUCCESS; + const ObTableSchema *table_schema = nullptr; ObRootService *root_service = NULL; if (OB_UNLIKELY(!inited_)) { ret = OB_NOT_INIT; @@ -1284,12 +1285,19 @@ int ObGlobalIndexBuilder::do_build_single_replica( LOG_WARN("root service ptr is null", K(ret)); } else { sql::ObIndexSSTableBuilder::BuildIndexJob job; + int64_t parallel_server_target = 5; + int tmp_ret = OB_SUCCESS; job.job_id_ = index_schema->get_table_id(); job.schema_version_ = task->schema_version_; job.snapshot_version_ = snapshot; job.data_table_id_ = index_schema->get_data_table_id(); job.index_table_id_ = index_schema->get_table_id(); - job.degree_of_parallelism_ = 10; + if (OB_UNLIKELY(OB_SUCCESS != (tmp_ret = ObSchemaUtils::get_tenant_int_variable( + OB_SYS_TENANT_ID, SYS_VAR_PARALLEL_SERVERS_TARGET, parallel_server_target)))) { + STORAGE_LOG(WARN, "failed to get sys tenant parallel server target", K(tmp_ret)); + } + job.degree_of_parallelism_ = std::max(10L, parallel_server_target * 2); + job.degree_of_parallelism_ = std::min(96L, job.degree_of_parallelism_); const int64_t timeout = GCONF.global_index_build_single_replica_timeout; const int64_t abs_timeout_us = ObTimeUtility::current_time() + timeout; if (OB_FAIL(root_service->submit_index_sstable_build_task(job, *this, abs_timeout_us))) { diff --git a/src/sql/ob_index_sstable_builder.cpp b/src/sql/ob_index_sstable_builder.cpp index 87259bf7ae219bedc0917ea4f7ab43c6429069ee..bd1908d24e946d8ad276ef8d37014666da02aa61 100644 --- a/src/sql/ob_index_sstable_builder.cpp +++ b/src/sql/ob_index_sstable_builder.cpp @@ -1632,7 +1632,7 @@ int ObIndexSSTableBuilder::split_ranges(ObArray>& ranges_arr "SELECT %.*s FROM " "(SELECT %.*s, bucket, ROW_NUMBER() OVER (PARTITION BY bucket ORDER BY %.*s) rn FROM " "(SELECT %.*s, NTILE(%ld) OVER (ORDER BY %.*s) bucket FROM " - "(SELECT %.*s FROM %s%.*s%s.%s%.*s%s SAMPLE BLOCK(%g) %s %ld) a) b) c WHERE rn = 1 " + "(SELECT %.*s FROM %s%.*s%s.%s%.*s%s SAMPLE BLOCK(%g)) a) b) c WHERE rn = 1 " "GROUP BY %.*s ORDER BY %.*s", static_cast(col_alias.length()), col_alias.ptr(), @@ -1659,8 +1659,6 @@ int ObIndexSSTableBuilder::split_ranges(ObArray>& ranges_arr sample_table.get_table_name_str().ptr(), name_quote(), sample_pct, - oracle_mode_ ? "WHERE ROWNUM <=" : "LIMIT", - max_sample_rows * 2, static_cast(col_alias.length()), col_alias.ptr(),