[FEAT MERGE] support auto dop

This commit is contained in:
obdev
2023-04-28 15:11:52 +00:00
committed by ob-robot
parent 642f1c7d84
commit b41dc0ebdd
106 changed files with 3815 additions and 2844 deletions

View File

@ -1433,7 +1433,7 @@ int ObDynamicSamplingUtils::get_ds_table_degree(ObOptimizerContext &ctx,
int64_t &degree)
{
int ret = OB_SUCCESS;
degree = ctx.get_parallel();
degree = ObGlobalHint::DEFAULT_PARALLEL;
const ObTableSchema *table_schema = NULL;
const ObSqlSchemaGuard *schema_guard = NULL;
if (OB_ISNULL(schema_guard = ctx.get_sql_schema_guard())) {
@ -1444,16 +1444,13 @@ int ObDynamicSamplingUtils::get_ds_table_degree(ObOptimizerContext &ctx,
} else if (OB_ISNULL(table_schema)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("get unexpected error", K(ret), K(table_schema));
} else if (ObGlobalHint::DEFAULT_PARALLEL <= (degree = log_plan->get_log_plan_hint().get_parallel(table_id))) {
// use table parallel hint
} else if (ctx.is_use_table_dop()) {
// use table dop
degree = table_schema->get_dop();
} else if (ctx.is_use_table_parallel_hint()) {
const ObTableParallelHint *hint = log_plan->get_log_plan_hint().get_parallel_hint(table_id);
if (NULL != hint) {
degree = hint->get_parallel();
} else {
// if not specified by object hint, use table dop by default
degree = table_schema->get_dop();
}
} else {
degree = std::max(degree, ctx.get_parallel());
}
LOG_TRACE("succeed to get ds table degree", K(degree));
return ret;