执行计划小结

2019.06.09 23:15

执行计划小结

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

001-几种种打印执行计划的方法

(plan_table+awr+内存+跟踪)

一、最常用的

1.sql跑不出来的时候explain plan for或set autotrace on

2.display_cursor+statistics_level=all(能看到表被访问的次数)

E-Rows和A-Rows得到预测的行数和真实的行数;

没有输出运行时的相关统计信息

执行计划中的Buffers就是真实的逻辑读的数值

dbms_xplan.display_cursor+sqlid

dbms_xplan.display_qwr+sqlid

二、偶尔用的

1.10046/sqltrace还能看sql的等待事件、递归调用

2.10053排查执行计划不准确的原因

3.awrsqrpt.sql(生成指定快照区间,指定SQLID的统计报表)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

002-执行计划主要看几点

一、看成本高的

二、看连接方式

1、NESTED LOOP(有一明显小表,想尽快得到少量结果,场景是把关联结果前一部分行打印出来)

2、HASH JOIN(大表,想得到总的关联结果)

3、Sort Merge(两个表都有关联条件的order by)

三、看访问路径是全表扫、索引扫、回表

谓词里显示filter的where条件,表示没走索引

可以先加hint试一下。

四、看逻辑读

逻辑读指的是Oracle从内存读到的数据块数量。一般来说是'consistent gets' + 'db block gets'。


五、我最近最遇到一个问题是

1、大表联接,走的嵌套没走hash,

2、临时用hint强制走hash join

3、以后对表做了分区或加where条件减少驱动表结果集

六、大面上的经验

1、隐式转换

2、评估值准确的重要性(E-ROWS 32,A-ROWS 75808)

3、返回行与逻辑读比率(总共获取1条记录A-ROWS,产生1048次逻辑读Buffers)


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

003-查看AWR和缓存中的执行计划

1、AWR执行计划

select * from table(dbms_xplan.display_awr('8qfs8857jc8fw',null,null,'ADVANCED')); 

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR('8qfs8857jc8fw'))

select tf.* from dba_hist_sqltext ht, table(dbms_xplan.display_awr(ht.sql_id, null, null, 'all')) tf where ht.sql_text like '%mac%';


2、获取库缓存中的执行计划

select t.* from v$sql s,table(dbms_xplan.display_cursor(s.sql_id,s.child_number,'ADVANCED ALLSTATS LAST PEEKED_BINDS')) t where s.sql_id = '6g0tcbdcr08b9';

为了获取缓存库中的执行计划,可以直接查询动态性能视图v$sql_plan和v$sql_plan_statistics_all等,但更方便的方法是: 

select t.* from v$sql s,table(dbms_xplan.display_cursor(s.sql_id,s.child_number,'allstats last')) t where s.sql_id = '8qfs8857jc8fw';

获取a-rows(实际行数) 信息需要执行 alter session set statistics_level=all 或 /*+ gather_plan_statistics */

select * from table(dbms_xplan.display_cursor(null,null,'ADVANCED ALLSTATS LAST PEEKED_BINDS'));

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


动力小刚于2019年5月  个人邮箱:zcs0237#163.com


0
0
评论
0

我要发表

热门课程推荐

博客专栏推荐

数据库升级笔记
免费 7篇/已完结

相关领域专家推荐