dba_indexes视图的性能分析_数据库其它

select case when status='UNUSABLE' then
        'alter index '||owner||'.'||index_name||' rebuild online compute statistics;'
      when to_number(degree)>1 then
        'alter index /* '||degree ||' */'||owner||'.'||index_name||' noparallel;'
    end case
from (select * from dba_indexes where degree<>‘DEFAULT') a
where status='UNUSABLE'
or to_number(degree)>1
and owner not in ('SYS','SYSTEM','MANAGER','WMSYS');

语句运行的速度很快,但是从statspack中发现这条语句的逻辑读单次高达26846。使用set autotrace比较了下9i和10g的执行计划和统计信息,发现9i查询这个视图的代价非常的高,而10g则有了一定的改善。在Oracle9i中,optimizer_mode默认是CHOOSE,所以查询数据字典使用了RBO,而Oracle10g则默认为ALL_ROWS,所以采用了CBO。

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
PL/SQL Release 9.2.0.6.0 - Production
CORE  9.2.0.6.0    Production
TNS for IBM/AIX RISC System/6000: Version 9.2.0.6.0 - Production
NLSRTL Version 9.2.0.6.0 - Production

SQL> set autot trace
SQL> select * from dba_indexes;

1242 rows selected.

Execution Plan
----------------------------------------------------------
  0   SELECT STATEMENT Optimizer=CHOOSE
  1  0  NESTED LOOPS (OUTER)
  2  1   NESTED LOOPS (OUTER)
  3  2    NESTED LOOPS
  4  3     NESTED LOOPS
  5  4      NESTED LOOPS (OUTER)
  6  5       NESTED LOOPS
  7  6        NESTED LOOPS (OUTER)
  8  7         NESTED LOOPS
  9  8          TABLE ACCESS (FULL) OF 'OBJ$'
 10  8          TABLE ACCESS (BY INDEX ROWID) OF 'IND$'
 11  10           INDEX (UNIQUE SCAN) OF 'I_IND1' (UNIQUE)
 12  7         TABLE ACCESS (BY INDEX ROWID) OF 'OBJ$'
 13  12          INDEX (UNIQUE SCAN) OF 'I_OBJ1' (UNIQUE)
 14  6        TABLE ACCESS (BY INDEX ROWID) OF 'OBJ$'
 15  14         INDEX (UNIQUE SCAN) OF 'I_OBJ1' (UNIQUE)
 16  5       TABLE ACCESS (CLUSTER) OF 'USER$'
 17  16        INDEX (UNIQUE SCAN) OF 'I_USER#' (NON-UNIQUE)
 18  4      TABLE ACCESS (CLUSTER) OF 'USER$'
 19  18       INDEX (UNIQUE SCAN) OF 'I_USER#' (NON-UNIQUE)
 20  3     TABLE ACCESS (CLUSTER) OF 'USER$'
 21  20      INDEX (UNIQUE SCAN) OF 'I_USER#' (NON-UNIQUE)
 22  2    TABLE ACCESS (CLUSTER) OF 'SEG$'
 23  22     INDEX (UNIQUE SCAN) OF 'I_FILE#_BLOCK#' (NON-UNIQUE)
 24  1   TABLE ACCESS (CLUSTER) OF 'TS$'
 25  24    INDEX (UNIQUE SCAN) OF 'I_TS#' (NON-UNIQUE)

Statistics
----------------------------------------------------------
     0 recursive calls
     0 db block gets
   42924 consistent gets
     0 physical reads
     0 redo size
   98000 bytes sent via SQL*Net to client
    1558 bytes received via SQL*Net from client
     84 SQL*Net roundtrips to/from client
     0 sorts (memory)
     0 sorts (disk)
    1242 rows processed
SQL>select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE  10.2.0.4.0   Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Productio
NLSRTL Version 10.2.0.4.0 - Production

21:32:11 SYS@coll>set autot trace
21:32:15 SYS@coll>select * from dba_indexes;

1162 rows selected.

Execution Plan
----------------------------------------------------------
Plan hash value: 3901056803

----------------------------------------------------------------------------------------------
| Id | Operation              | Name  | Rows | Bytes | Cost (%CPU)| Time   |
----------------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT          |    | 1164 |  330K|  237  (3)| 00:00:03 |
|* 1 | HASH JOIN RIGHT OUTER       |    | 1164 |  330K|  237  (3)| 00:00:03 |
|  2 |  TABLE ACCESS FULL         | TS$  |   9 |  189 |   4  (0)| 00:00:01 |
|* 3 |  HASH JOIN RIGHT OUTER       |    | 1164 |  306K|  232  (3)| 00:00:03 |
|  4 |  TABLE ACCESS FULL        | SEG$  | 2635 |  102K|  18  (0)| 00:00:01 |
|* 5 |  HASH JOIN            |    | 1164 |  261K|  214  (3)| 00:00:03 |
|  6 |   TABLE ACCESS FULL        | USER$ |  35 |  560 |   2  (0)| 00:00:01 |
|* 7 |   HASH JOIN            |    | 1164 |  243K|  211  (3)| 00:00:03 |
|  8 |   TABLE ACCESS FULL       | USER$ |  35 |  560 |   2  (0)| 00:00:01 |
|* 9 |   HASH JOIN RIGHT OUTER     |    | 1164 |  225K|  208  (2)| 00:00:03 |
| 10 |    TABLE ACCESS FULL       | USER$ |  35 |  560 |   2  (0)| 00:00:01 |
|* 11 |    HASH JOIN           |    | 1164 |  206K|  206  (2)| 00:00:03 |
|* 12 |    HASH JOIN OUTER       |    | 1164 |  172K|  174  (2)| 00:00:03 |
| 13 |     MERGE JOIN         |    | 1164 |  142K|  142  (2)| 00:00:02 |
|* 14 |     TABLE ACCESS BY INDEX ROWID| IND$  | 1164 |  104K|  109  (0)| 00:00:02 |
| 15 |      INDEX FULL SCAN      | I_IND1 | 1164 |    |   2  (0)| 00:00:01 |
|* 16 |     SORT JOIN         |    | 10589 |  341K|  33  (7)| 00:00:01 |
|* 17 |      TABLE ACCESS FULL     | OBJ$  | 10589 |  341K|  32  (4)| 00:00:01 |
| 18 |     TABLE ACCESS FULL      | OBJ$  | 10592 |  279K|  31  (0)| 00:00:01 |
| 19 |    TABLE ACCESS FULL      | OBJ$  | 10592 |  310K|  31  (0)| 00:00:01 |
----------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

  1 - access("I"."TS#"="TS"."TS#"(+))
  3 - access("I"."FILE#"="S"."FILE#"(+) AND "I"."BLOCK#"="S"."BLOCK#"(+) AND
       "I"."TS#"="S"."TS#"(+))
  5 - access("IO"."OWNER#"="IU"."USER#")
  7 - access("U"."USER#"="O"."OWNER#")
  9 - access("ITO"."OWNER#"="ITU"."USER#"(+))
 11 - access("I"."BO#"="IO"."OBJ#")
 12 - access("I"."INDMETHOD#"="ITO"."OBJ#"(+))
 14 - filter(BITAND("I"."FLAGS",4096)=0)
 16 - access("O"."OBJ#"="I"."OBJ#")
    filter("O"."OBJ#"="I"."OBJ#")
 17 - filter(BITAND("O"."FLAGS",128)=0)

Statistics
----------------------------------------------------------
     0 recursive calls
     0 db block gets
    876 consistent gets
     0 physical reads
     0 redo size
   92582 bytes sent via SQL*Net to client
    1339 bytes received via SQL*Net from client
     79 SQL*Net roundtrips to/from client
     1 sorts (memory)
     0 sorts (disk)
    1162 rows processed

select /*+ rule */* from dba_indexes;

1162 rows selected.

Elapsed: 00:00:00.55

Execution Plan
----------------------------------------------------------
Plan hash value: 2107813288

--------------------------------------------------------------
| Id | Operation              | Name      |
--------------------------------------------------------------
|  0 | SELECT STATEMENT          |        |
|  1 | NESTED LOOPS OUTER         |        |
|  2 |  NESTED LOOPS OUTER        |        |
|  3 |  NESTED LOOPS           |        |
|  4 |   NESTED LOOPS          |        |
|  5 |   NESTED LOOPS OUTER       |        |
|  6 |    NESTED LOOPS         |        |
|  7 |    NESTED LOOPS OUTER      |        |
|  8 |     NESTED LOOPS        |        |
|* 9 |     TABLE ACCESS FULL     | OBJ$      |
|* 10 |     TABLE ACCESS BY INDEX ROWID| IND$      |
|* 11 |      INDEX UNIQUE SCAN     | I_IND1     |
| 12 |     TABLE ACCESS BY INDEX ROWID | OBJ$      |
|* 13 |     INDEX UNIQUE SCAN     | I_OBJ1     |
| 14 |    TABLE ACCESS BY INDEX ROWID | OBJ$      |
|* 15 |     INDEX UNIQUE SCAN      | I_OBJ1     |
| 16 |    TABLE ACCESS CLUSTER     | USER$     |
|* 17 |    INDEX UNIQUE SCAN      | I_USER#    |
| 18 |   TABLE ACCESS CLUSTER      | USER$     |
|* 19 |    INDEX UNIQUE SCAN       | I_USER#    |
| 20 |   TABLE ACCESS CLUSTER      | USER$     |
|* 21 |   INDEX UNIQUE SCAN       | I_USER#    |
| 22 |  TABLE ACCESS CLUSTER       | SEG$      |
|* 23 |   INDEX UNIQUE SCAN        | I_FILE#_BLOCK# |
| 24 |  TABLE ACCESS CLUSTER       | TS$      |
|* 25 |  INDEX UNIQUE SCAN        | I_TS#     |
--------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

  9 - filter(BITAND("O"."FLAGS",128)=0)
 10 - filter(BITAND("I"."FLAGS",4096)=0)
 11 - access("O"."OBJ#"="I"."OBJ#")
 13 - access("I"."INDMETHOD#"="ITO"."OBJ#"(+))
 15 - access("I"."BO#"="IO"."OBJ#")
 17 - access("ITO"."OWNER#"="ITU"."USER#"(+))
 19 - access("U"."USER#"="O"."OWNER#")
 21 - access("IO"."OWNER#"="IU"."USER#")
 23 - access("I"."TS#"="S"."TS#"(+) AND "I"."FILE#"="S"."FILE#"(+) AND
       "I"."BLOCK#"="S"."BLOCK#"(+))
 25 - access("I"."TS#"="TS"."TS#"(+))

Note
-----
  - rule based optimizer used (consider using cbo)

Statistics
----------------------------------------------------------
     0 recursive calls
     0 db block gets
   25254 consistent gets
     26 physical reads
     0 redo size
   93977 bytes sent via SQL*Net to client
    1339 bytes received via SQL*Net from client
     79 SQL*Net roundtrips to/from client
     0 sorts (memory)
     0 sorts (disk)
    1162 rows processed

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索视图
, 性能分析
dba_indexes
数据库性能视图、dba indexes、oracle dba indexes、degree dba indexes、dba indexes status,以便于您获取更多的相关知识。

时间: 2024-10-22 01:35:05

dba_indexes视图的性能分析_数据库其它的相关文章

如何用分表存储来提高性能 推荐_数据库其它

首先,童家旺介绍了他认为的什么是优化:第一.做任何事情最快的方法就是什么也不做. ▲支付宝资深数据库架构师童家旺 第二.不访问不必要的数据:使用B*Tree/hash等方法定位必要的数据.使用column Store或分表的方式将数据分开存储.使用Bloom filter算法排除空值查询. 第三.合理的利用硬件来提升访问效率:使用缓存消除对数据的重复访问.使用批量处理来减少磁盘的Seek操作.使用批量处理来减少网络的Round Trip.使用SSD来提升磁盘访问效率. 响应时间和吞吐量之间的关系

8 种常用的 NoSQL 数据库系统对比分析_数据库其它

Kristóf Kovács 是一位软件架构师和咨询顾问,他最近发布了一片对比各种类型NoSQL数据库的文章. 虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举. 但是NoSQL数据库之间的不同,远超过两 SQL数据库之间的差别.这意味着软件架构师更应该在项目开始时就选择好一个适合的 NoSQL数据库.针对这种情况,这里对 Cassandra.Mongodb.CouchDB.Redis. Ria

ASP.NET MVC中的视图生成实例分析_实用技巧

本文实例分析了ASP.NET MVC中的视图生成过程.分享给大家供大家参考.具体如下: 在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据. 从控制器到视图 通常,在 Controller 中,我们定义多个 Action ,每个 Action 的返回类型一般是 ActionResult,在 Action 处理的最后,我们返回对于视图的调用. 复制代码 代码如下: pub

asp.ent(C#)中判断空字符串的3种方法以及性能分析_实用技巧

3种方法分别是: string a=""; 1.if(a=="") 2.if(a==String.Empty) 3.if(a.Length==0) 3种方法都是等效的,那么究竟那一种方法性能最高呢?本人用实验说明问题. 建立3个aspx页面(为什么用网页,主要是利用Microsoft Application Center Test ) WebForm1.aspx 复制代码 代码如下: private void Page_Load(object sender, Sys

写出高性能SQL语句的35条方法分析_数据库其它

(1)整合简单,无关联的数据库访问: 如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系) (2)删除重复记录: 最高效的删除重复记录方法 ( 因为使用了ROWID)例子: DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID) FROM EMP X WHERE X.EMP_NO = E.EMP_NO); (3)用TRUNCATE替代DELETE: 当删除表中的记录时,在通常情况下, 回滚段(rollback

sql小计汇总 rollup用法实例分析_数据库其它

这里介绍sql server2005里面的一个使用实例: CREATE TABLE tb(province nvarchar(10),city nvarchar(10),score int) INSERT tb SELECT '陕西','西安',3 UNION ALL SELECT '陕西','安康',4 UNION ALL SELECT '陕西','汉中',2 UNION ALL SELECT '广东','广州',5 UNION ALL SELECT '广东','珠海',2 UNION ALL

性能分析工具的使用

 性能规划器的使用     性能规划器(Capacity Planner)是集成在Oracle 企业管理包(Oracle Enterprise Management Packs)中用来对反映系统性能的参数进行收集的工具,可以指定要收集的数据.收集数据的频率和数据装载到Oracle Capacity Planner历史记录数据库的时间.这样便于管理员对一定时间范围内的系统性能参数进行比较分析.    1. 性能规划器的设置    (1)在服务器的桌面选择[开始]/[程序]/[Oracle-OraH

SQL中利用DMV进行数据库性能分析

相信朋友对SQL Server性能调优相关的知识或多或少都有一些了解.虽然说现在NOSQL相关的技术非常的火热,但是RMDB(关系型数据库)与NOSQL是并存的,并且适用在各种的项目中.在一般的企业级开发中,主要还是RMDB占据主导地位.并且在互联网项目中,也不是摒弃了RMDB,例如MySQL就在很多的互联网应用中发挥着作用.所以,对数据库的调优是个值得深入学习的课题.本系列文章,主要讲述与SQL Server相关的调优知识,希望能够为朋友们带来一些帮助. 本篇提纲如下: 传统SQL Serve

数据库性能分析及调整一例

数据|数据库|性能 故障现象2004年6月8日上午10:00,内蒙古巴盟网通用户反映在OSS系统界面"话单查询"里查询单个用户五天的话单特别慢,查询很长时间无结果. 例如:在OSS系统界面"综合查询"内点击"收费"-〉"话单查询",键入"用户号码,起始时间:2004-01-01 00:00:00,结束时间:2004-06-01 23:00:00",点击查询后,IE进度条缓慢,很长时间不返回结果.故障分析经过