设为首页 加入收藏

TOP

Oracle SQL性能分析之10053事件(一)
2019-03-21 00:08:10 】 浏览:285
Tags:Oracle SQL 性能 分析 10053 事件

1、测试环境:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production


2、建立测试对象
SQL> create table tabtemp as select * from dba_objects where object_id is not null;
Table created.


SQL> select count(object_id) from tabtemp;
COUNT(OBJECT_ID)
----------------
          72764


测试表object_id列的数值分布:
SQL> select count(distinct object_id) from tabtemp;
COUNT(DISTINCTOBJECT_ID)
------------------------
                  72764
建立索引:
SQL> create index idx_tabtemp_id on tabtemp(object_id);


3、生成10053事件
统计表及索引信息:
SQL> exec dbms_stats.gather_table_stats(user,'TABTEMP',cascade=>true);


查看执行计划:
SQL> alter session set tracefile_identifier='plan';
SQL> set autotrace trace exp;
SQL> alter session set events '10053 trace name context forever,level 1';


SQL> select * from tabtemp where object_id=3;
Execution Plan
----------------------------------------------------------
Plan hash value: 2221486709
--------------------------------------------------------------------------------------------
| Id  | Operation                  | Name          | Rows  | Bytes | Cost (%CPU)| Time    |
--------------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT            |                |    1 |    97 |    2  (0)| 00:00:01 |
|  1 |  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)
由执行计划可知,查询走索引,这是非常高效的查询方式。



更新测试表,将object_id列数值全部设置为3:
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> set autotrace trace exp;
SQL> select * from tabtemp where object_id=3;
Execution Plan
----------------------------------------------------------
Plan hash value: 2221486709
-------------------------------------------------------------------------------------------
| Id  | Operation                  | Name          | Rows  | Bytes | Cost (%CPU)| Time    |
-------------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT            |                |    1 |    97 |    2  (0)| 00:00:01 |
|  1 | 

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

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目