暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 优化器动态采样在优化器 _ 动态采样级别2

askTom 2017-02-15
207

问题描述

在我的Oracle 12.1.0.2 Oracle标准版数据库中,默认设置为OPTIMIZER_DYNAMIC_SAMPLING = 2,我看到某些所有表都已经收集了表统计信息的sql正在进行动态采样。因此,与以前的Oracle 12.1.0.1版本相比,某些SQL语句的性能大幅下降。我仅在升级后的环境 (从Oracle 12.1.0.1到Oracle 12.1.0.2) 中发现这一点,而在新的Oracle 12.1.0.2中却没有。

根据Oracle 12c文档,在OPTIMIZER_DYNAMIC_SAMPLING = 2 (这是默认值),dynamic statistics is done only if at least one of the tables in the SQL query has no table statistics。但在这里,我可以看到动态采样是由optimizer在Oracle 12.1.0.2版本中完成的,用于某些sql (大部分时间都带有大表)。/* DS_SVC */可以在跟踪文件中看到。

这可能是优化器逻辑中的错误,还是我错过了什么?

专家解答

这也在文档中

“在某些情况下,优化器会自动决定使用11,例如:
-查询将并行运行。
-查询之前已执行,并且其历史记录可用 (来自游标缓存,自动工作负载存储库或SQL管理库)。”

这些可以适用于你吗?
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论