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

Oracle 相同的SQL,相同的计划,但在11gR2与12cR1上的时间不同

askTom 2017-05-08
196

问题描述

嗨,克里斯/康纳,

希望你做得很好!!

需要您就我们陷入的这种奇怪情况提出建议,

因此,我们已经从11gR2到12cR1数据库,目前处于UAT阶段,但是,当我们的一个关键过程开始在12c数据库上花费4小时,而在11gR2 (我们目前的生产) 上花费分钟时,这一切都停止了。

我们将一个非常简单的SELECT语句归零,只涉及1个表 (列表分区 [2个分区-压缩和未压缩],3个索引)

当我们单独运行SQL时,它提供了相同的性能,但是,在此过程中,一切都变得一团糟。

因此,我们为同一张表构建了一个可怕的SQL来检查压力测试,如下所示:

从大标签中选择bt。*
其中bt.some_date> ''
和bt.时间戳> '<日期>'
和bt.file_id> 某个数字;

该表包含327871000行,大小123 Gig,并且我们确保使用比较运算符不会使用索引。

现在结果令人震惊:

在生产11gR2上: 它在7分钟内完成
在12cR1上: 花了13到17分钟。

两个系统上的计划是相同的: 全表扫描,列表分区扫描。
两种系统/服务器在配置方面完全相同。

你的任何想法都会很棒。

谢谢,
普拉文·库马尔。

专家解答

在每个db中
-执行dbms_support.session_trace_enable (等待 =>true)
-然后运行查询
-查看tkprof格式的跟踪文件,以查看丢失的时间。

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

评论