来自并行执行的工作原理:
下面是并行度策略设置为自动时并行语句处理的总结。发出SQL语句。语句被解析,优化器确定执行计划。将检查PARALLEL_MIN_TIME_THRESHOLD初始化参数指定的阈值限制。
假设parallel_degree_policy是MANUAL
,而SQL语句包含一个并行提示或定义的并行DDL值。甲骨文优化器还会检查PARALLEL_MIN_TIME_THRESHOLD
吗?
此外,估计执行时间或实际执行时间是否在阈值限制附近的计算中使用?
发布于 2017-01-14 17:41:33
以下引用自你的链接,强调我的:
PARALLEL_MIN_TIME_THRESHOLD是控制自动DOP的第二个初始化参数。它指定语句在考虑语句为自动DOP之前应该具有的最小执行时间。默认情况下,这是10秒。优化器首先计算SQL语句的串行执行计划;如果估计的执行时间大于PARALLEL_MIN_TIME_THRESHOLD (10秒),则该语句将成为自动DOP的候选。
另一个很好的资源是使用默认参数设置,重点是我的资源:
PARALLEL_MIN_TIME_THRESHOLD:优化器估计的执行时间,上面是一个语句,用于自动并行查询和自动派生DOP。
直接回答你的问题:
假设parallel_degree_policy是手动的,而SQL语句包含一个并行提示或定义的并行DDL值。甲骨文优化器还会检查PARALLEL_MIN_TIME_THRESHOLD吗?
不,PARALLEL_MIN_TIME_THRESHOLD
不会被使用。如果指定并行度,查询优化器为什么要计算串行计划的成本?它会用这些信息做什么?你已经指定了DOP。这只有在自动DOP的上下文中才有意义。
此外,估计执行时间或实际执行时间是否在阈值限制附近的计算中使用?
这一定是估计的时间。Oracle可能会以串行方式执行大部分查询,然后切换到并行计划,这是否有意义?据我所知,对于数据流操作,在开始执行时会选择DOP。
https://dba.stackexchange.com/questions/161064
复制相似问题