问题描述
嗨,汤姆,
我读过你的很多文章,解释计划是如何误导现实的。
我的解释计划是做同样的事情只是猜测错了。。给时间71秒来执行这个查询。实际上-花了一个小时
这是我的问题。Oracle说,如果解释计划的猜测时间少于10秒,那么查询就永远不会成为并行执行的候选对象。我的99%的查询都有一个等于1秒的估计时间,虽然这是不正确的。我的问题是为什么?
我可以接受1分钟的猜测,而实际运行时间为6分钟。在这里, 70秒的猜测实际上变成了60分钟。
我需要理解为什么大多数时候这个估计是错误的。我查了一下统计数据,一切都很好。还有一件事,当我使用并行HINT时,它执行得更快,但通常优化器不能并行执行我的查询,为什么?
名称类型值
-------------------------------------------------------------------------------------------------
并行处理时间阈值字符串AUTO
致以问候,
沙阿
我读过你的很多文章,解释计划是如何误导现实的。
我的解释计划是做同样的事情只是猜测错了。。给时间71秒来执行这个查询。实际上-花了一个小时
这是我的问题。Oracle说,如果解释计划的猜测时间少于10秒,那么查询就永远不会成为并行执行的候选对象。我的99%的查询都有一个等于1秒的估计时间,虽然这是不正确的。我的问题是为什么?
我可以接受1分钟的猜测,而实际运行时间为6分钟。在这里, 70秒的猜测实际上变成了60分钟。
我需要理解为什么大多数时候这个估计是错误的。我查了一下统计数据,一切都很好。还有一件事,当我使用并行HINT时,它执行得更快,但通常优化器不能并行执行我的查询,为什么?
名称类型值
-------------------------------------------------------------------------------------------------
并行处理时间阈值字符串AUTO
致以问候,
沙阿
专家解答
解释计划估计错误的原因有很多:
-缺少、过期或其他不准确的统计信息
-将变量绑定到带有倾斜数据的列(那些具有少数值的值比其他值更频繁出现的值)
-优化程序限制和错误
-等等
如果您想知道为什么会发生这种情况,那么您需要向我们提供解释和执行计划、查询、表、统计信息等的详细信息。
如果需要,可以通过设置以下选项来降低并行阈值:
改变(系统|会话)并行处理时间/次= <秒>
"但通常优化程序无法并行执行我的查询为什么?"
您如何验证Oracle是否使用并行?再次,我们需要具体的细节来试图解释为什么发生在你的案件中。
-缺少、过期或其他不准确的统计信息
-将变量绑定到带有倾斜数据的列(那些具有少数值的值比其他值更频繁出现的值)
-优化程序限制和错误
-等等
如果您想知道为什么会发生这种情况,那么您需要向我们提供解释和执行计划、查询、表、统计信息等的详细信息。
如果需要,可以通过设置以下选项来降低并行阈值:
改变(系统|会话)并行处理时间/次= <秒>
"但通常优化程序无法并行执行我的查询为什么?"
您如何验证Oracle是否使用并行?再次,我们需要具体的细节来试图解释为什么发生在你的案件中。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




