小知识:SQL Monitor Report的使用 - AlfredZhao
source link: https://www.cnblogs.com/jyzhao/p/17232415.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
在上一篇 优化利器In-Memory开启和效果
中,提到的两个SQL对比,使用的是传统的dbms_xplan.display_cursor
方式来查看执行计划,好处是文本输出的通用性强,基本信息也都有。
但如果大家参加过我们的RWP培训,就会发现O原厂强烈推荐大家使用的一个工具是 SQL Monitor Report,且要使用ACTIVE的类型,这可以让看SQL执行计划变得赏心悦目。
本文就简单介绍下,如何使用 SQL Monitor Report,也以之前的例子,来更直观的看到二者执行计划的差异:
1.准备通用的sqlmon.sql脚本
为了更具通用性,这里以SQL_ID为输入条件:
vi sqlmon.sql
set pagesize 0 echo off timing off linesize 1000 trimspool on trim on long 2000000 longchunksize 2000000 feedback off
spool sql_monitor_&sql_id\.htm
select dbms_sqltune.report_sql_monitor(type=>'ACTIVE', sql_id=>'&sql_id', report_level=>'ALL') monitor_report from dual;
spool off
2.执行两条SQL,并确认各自的sql_id
这次使用更明确的hints来区分是否使用In-Memory和确保都可以生成SQL Monitor Report:
--SQL1:
select /*+ monitor */ count(*) from L
sql_id: ahtu40vr8dbhu
--SQL2:
select /*+ monitor no_inmemory */ count(*) from L
sql_id: 7rzcsju067wr0
获取sql_id有多种方式,其实最方便的就是也可以通过传统看执行计划的方式来获取。
3.调用sqlmon脚本生成SQL Monitor Report
SQL> @sqlmon
Enter value for sql_id: ahtu40vr8dbhu
Enter value for sql_id: ahtu40vr8dbhu
SQL> @sqlmon
Enter value for sql_id: 7rzcsju067wr0
Enter value for sql_id: 7rzcsju067wr0
4.对比两个SQL Monitor Report
SQL1的SQL Monitor Report:
SQL2的SQL Monitor Report:
除了之前执行时就体验的执行时间差异,其对IO资源的实际消耗也可以非常直观的看到,二者有很大的差异。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK