设为首页 加入收藏

TOP

Oracle SQL性能分析之10053事件(二)
2019-03-21 00:08:10 】 浏览:283
Tags:Oracle SQL 性能 分析 10053 事件
TABLE ACCESS BY INDEX ROWID| TABTEMP        |    1 |    97 |    2  (0)| 00:00:01 |
|*  2 |  INDEX RANGE SCAN          | IDX_TABTEMP_ID |    1 |      |    1  (0)| 00:00:01 |
-------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
  2 - access("OBJECT_ID"=3)
由输出结果可知,本次查询沿用原来的执行计划,是错误的执行计划。


重新对更新后的测试对象进行数据分析:
SQL> set autotrace off;
SQL> exec dbms_stats.gather_table_stats(user,'TABTEMP',cascade=>true);


查看收集统计数据后的执行计划:
SQL> set autotrace trace exp;
SQL> select * from tabtemp where object_id=3;
Execution Plan
----------------------------------------------------------
Plan hash value: 3955501171
-----------------------------------------------------------------------------
| Id  | Operation        | Name    | Rows  | Bytes | Cost (%CPU)| Time    |
-----------------------------------------------------------------------------
|  0 | SELECT STATEMENT  |        | 72757 |  6749K|  293  (2)| 00:00:04 |
|*  1 |  TABLE ACCESS FULL| TABTEMP | 72757 |  6749K|  293  (2)| 00:00:04 |
-----------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
  1 - filter("OBJECT_ID"=3)


由输出可知,本次查询使用了正确的执行计划。所以,要注意在实际生产环境中对表、索引等进行及时有效的统计数据收集工作,避免因此带来性能问题。


SQL> alter session set events '10053 trace name context off';
SQL> select value from v$diag_info where name='Default Trace File';
VALUE
------------------------------------------------------------------------------
c:\app\administrator\diag\rdbms\orcl11g\orcl11g\trace\orcl11g_ora_5952_plan.trc



4、分析10053事件trace文件中CBO出错的位置
#more  orcl11g_ora_5952_plan.trc
在前面模拟中有如下操作:
SQL> update tabtemp set object_id=3 where object_id!=3;
72763 rows updated.
SQL> commit;
SQL> select count(distinct object_id) from tabtemp;
COUNT(DISTINCTOBJECT_ID)
------------------------
                      1
SQL> select * from tabtemp where object_id=3;  此处没有重新进行统计信息收集,直接发起查询。


查看10053trace文件中相对应的内容:


***************************************


BASE STATISTICAL INFORMATION


***********************


Table Stats::


  Table: TABTEMP  Alias: TABTEMP


    #Rows: 72764  #Blks:  1062  AvgRowLen:  97.00


Index Stats::


  Index: IDX_TABTEMP_ID  Col#: 4


LVLS: 1  #LB: 161  #DK: 72764 LB/K: 1.00  DB/K: 1.00  CLUF: 1102.00


 


Access path analysis for TABTEMP


***************************************


SINGLE TABLE ACCESS PATH


  Single Table Cardinality Estimation for TABTEMP[TABTEMP]


  Table: TABTEMP  Alias: TABTEMP


    Card: Original: 72764.000000  Rounded: 1  Computed: 1.00  Non Adjusted: 1.00


  Access Path: TableScan


    Cost:  291.18  Resp: 291.18  Degree: 0


      Cost_io: 289.00  Cost_cpu: 26481829


  &

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Oracle通过指令创建用户 下一篇Oracle迁移到Greenplum的方案

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目