执行计划杂记

在oracle 11g中,dbms_xplan包已经增加了不少内容,不再像9i一般只局限于display。在这里小记一把和执行计划相关的内容。

(1) gather_plan_statistics 和dbms_xplan.display_cursor连用,如:

在此处看 E-Rows和A-Rows之间的差别是否巨大,如差距大则表示estimate rows和actual rows之间差距巨大,统计信息可能有问题。

(2) 看历史的执行计划:
历史的执行计划可以在dba_hist_sql_plan中找到,有不同的PLAN_HASH_VALUE,并且我们可以结合awr来一起看。

(3) 利用WRI$_OPTSTAT_TAB_HISTORY看table的历史统计信息:

同理,看索引的历史统计信息可以用WRI$_OPTSTAT_IND_HISTORY。

(4) 关于Exadata中的执行计划。
在Exadata中,由于存在storage index和smart scan,传统的执行计划不一定是最佳,因为如果能在Exadata storage server这一层中,进行抽取所需的数据,把过滤之后的数据传给database server,这样效率会高很多。所以我们可以试试尽量走全表扫描,或者index full scan,不要走index fast full scan。
如果走表的全表扫描,你会看到在执行计划中,有table access storage full,而不是我们平时的table access full,这是有用到smart scan的一个标准:

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据