当前位置:
文档之家› Oracle SQL 性能调优工具
Oracle SQL 性能调优工具
Plan hash value: 2863358136
-----------------------------------------------------------------------------------------------------------------
| Id | Operation
|
|
|
|
|
|
| 4|
NESTED LOOPS
|
|
1 | 80 | 20 (0)| 00:00:01 |
| 5|
NESTED LOOPS
|
|
3 | 171 | 14 (0)| 00:00:01 |
| 6|
TABLE ACCESS BY INDEX ROWID| ODS_OE_ORDER_LINES_ALL
| Name
| Rows | Bytes | Cost (%CPU)| Time
|
-----------------------------------------------------------------------------------------------------------------
---------- ------------------------------ ------------------------------ -------------- --- --- ---
6.1274E+17 SQL_0880e434939b12c7
SQL_PLAN_0j0746k9tq4q74c0fd94c AUTO-CAPTURE YES YES YES
Oracle SQL
性能调优工具
唐晓华
内容概览
SPM SQLT REWRITE ORA&MON&OS Watch AWR&ASH ADDM&STA
介绍 例子
SPM是什么?
• 在11g之前,我们可以使用存储大纲(Stored Outline)和SQL Profile 来帮助我们固定某个SQL语句的执行计划.防止由于执行计划的改变从 而导致SQL性能的衰退。不过这些技术需要DBA人为的处理,比如存 储大纲需要DBA手工创建,而对10g中提供的SQL Profile来说,则需 要DBA手工应用才可以生效。
| 0 | SELECT STATEMENT
|
|
|
| 21 (100)|
|
| 1 | WINDOW BUFFER
|
|
1 | 80 | 21 (5)| 00:00:01 |
| 2 | HASH GROUP BY
|
|
1 | 80 | 21 (5)| 00:00:01 |
| 3 | NESTED LOOPS
Predicate Information (identified by operation id): ---------------------------------------------------
|
3 | 138 |
8 (0)| 00:00:01 |
|* 7 |
INDEX RANGE SCAN
| ODS_OE_ORDER_LINES_ALL_N17 |
3|
ห้องสมุดไป่ตู้
|
3 (0)| 00:00:01 |
| 8|
TABLE ACCESS BY INDEX ROWID| ODS_OE_ORDER_HEADERS_ALL
• 在11g中,Oracle 提供了SPM.
• SPM就是Sql Plan Management,通过这个特性,Oracle自动去判断 某个SQL的新的执行计划是否更加合理(成本更低),只有在新的执 行计划比原来的执行计划更好的情况下,它才会被使用,从而有效的 保护了执行计划的稳定性,进而保证了SQL语句的执行效率。
SPM举例 - 调整前
2) check execution plan select * from table(dbms_xplan.display_cursor()); SQL> PLAN_TABLE_OUTPUT SQL_ID gzfky5zazcyxc, child number 2 -------------------------------------
|
1 | 11 |
2 (0)| 00:00:01 |
|* 9 |
INDEX UNIQUE SCAN
| ODS_OE_ORDER_HEADERS_ALL_U1 |
1|
|
1 (0)| 00:00:01 |
|* 10 |
INDEX UNIQUE SCAN
| ODS_PERIOD_CST_ITEM_COSTS_U1 |
• sql_handle:表示SQL语句的句柄 • plan_name: 表示该SQL语句执行计划的名字 • origin: 表示该执行计划是如何进入plan history的。AUTO-CAPTURE:优化器自动加入;MANUAL:DBA手工加入 • enabled: 表示是否被启用了。YES:启用 NO:禁用。如果某个执行计划为禁用,则优化器根本就不会考虑使用该执行计划
基线捕获
SQL> select signature,sql_handle,plan_name,origin,enabled,accepted,autopurge from dba_sql_plan_baselines;
SIGNATURE SQL_HANDLE
PLAN_NAME
ORIGIN
ENA ACC AUT
SPM使用场景
自动捕获
• 默认optimizer_capture_sql_plan_baselines设置为false. • alter session set optimizer_capture_sql_plan_baselines=true;
• 在session级别设置为true后,执行SQL. • 会自动捕获一个执行计划到dba_sql_plan_baselines表中.
1|
|
1 (0)| 00:00:01 |
| 11 |
TABLE ACCESS BY INDEX ROWID | ODS_PERIOD_CST_ITEM_COSTS |
1 | 23 |
2 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------------------------