Oracle提供一个监控索引的方法,来确定索引是否被使用。如果索引没有被使用,就可以删除它们以减少不必要的语句的开销。因为表上的大量不必要的索引可能会降低DML语句的性能,给数据库性能产生压力。所以生产环境上,以根据业务增长情况定期监控、分析数据库索引的使用,特别是一些大表上的索引,提升数据库事务提交的性能。

--查看表上的索引

SQL> Selectindex_name,table_name,num_rows From dba_indexes i Where i.table_name ='WEBSITE_VIEW_TB' ;

INDEX_NAME                     TABLE_NAME                       NUM_ROWS

------------------------------------------------------------ ----------

CURRTIME_IDX                   WEBSITE_VIEW_TB                  79284331

ORDERNO_IDX                    WEBSITE_VIEW_TB                   2021984

ORDERSOURCE_IDX                WEBSITE_VIEW_TB                    938174

--开启索引监控

SQL> ALTER INDEX CURRTIME_IDX MONITORING USAGE;

Index altered

--查看索引监控

SQL> Select * From v$object_usage;

INDEX_NAME                     TABLE_NAME                     MONITORING USED START_MONITORING    END_MONITORING

------------------------------------------------------------            ------------------- --------- --------------------------------------

CURRTIME_IDX                   WEBSITE_VIEW_TB                YES          NO     08/20/2013 14:19:48

注意:

如果开启了索引监控功能,用v$object_usage视图可以查看正在被监控的索引记录,USED列表示在开启索引监控过程中索引是否被使用,MONITORING列表示是否开启了索引监控,START_MONITORING表示开启索引监控的开始时间,END_MONITORING表示开启索引监控的结束时间

--执行查询语句,使用被监控的索引

SQL> Select Count(*) From log.WEBSITE_VIEW_TB t

2 Where t.currtime between to_date('2013-1-27','yyyy-mm-dd')And to_date('2013-1-28','yyyy-mm-dd');

COUNT(*)

----------

750603

--可以看到记录的USED列值变成了YES,表示索引被使用过。

SQL> Select * From v$object_usage;

INDEX_NAME                     TABLE_NAME                     MONITORING USED  START_MONITORING    END_MONITORING

----------------------------   -----------------------------                 ---------------  --------   ------------------------------  --------

CURRTIME_IDX                   WEBSITE_VIEW_TB                YES         YES       08/20/2013 14:19:48

--分析完毕后,关闭索引监控,因为监控也会占用一定的资源

SQL> ALTER INDEX CURRTIME_IDX NOMONITORING USAGE;

Index altered

--可以看到MONITORING列变为NO,END_MONITORING列被填充,索引停止监控

SQL> Select * From v$object_usage;

INDEX_NAME                     TABLE_NAME                    MONITORING USED  START_MONITORING   END_MONITORING

-----------------------------------------------------------------     -------------------  --------   -------------------------------  ---------------------------

CURRTIME_IDX                   WEBSITE_VIEW_TB               NO           YES      08/20/2013 14:19:48      08/20/2013 14:32:18

--再次执行查询,监控记录无变化

SQL> Select Count(*) From log.WEBSITE_VIEW_TB t

2 Where t.currtime between to_date('2013-1-27','yyyy-mm-dd') And to_date('2013-1-28','yyyy-mm-dd');

COUNT(*)

----------

750603

SQL> Select * From v$object_usage;

INDEX_NAME                     TABLE_NAME                     MONITORING USED  START_MONITORING    END_MONITORING

-----------------------------------------------------------------     -------------------  --------   -------------------------------  ---------------------------

CURRTIME_IDX                   WEBSITE_VIEW_TB                NO           YES      08/20/2013 14:19:48      08/20/2013 14:32:18

--再次开启索引监控,相应监控记录值又发生了变化

SQL> ALTER INDEX CURRTIME_IDX MONITORING USAGE;

Index altered

SQL> Select * From v$object_usage;

INDEX_NAME                     TABLE_NAME                     MONITORING USED START_MONITORING    END_MONITORING

------------------------------------------------------------ ---------- ---- --------------------------------------

CURRTIME_IDX                   WEBSITE_VIEW_TB                YES        NO  08/20/2013 14:34:15

总结:

虽然v$object_usage表能记录索引监控和使用的状态,但它不能统计索引被使用的次数和频率,只记录了在开启索引监控的时间段索引是否被使用过,这一点要值的注意。

Oracle 监控索引使用的更多相关文章

  1. Oracle 重建索引脚本

    该指数是一个有力的武器,以提高数据库的查询性能. 没有索引,喜欢同样的标签库没有书籍,找书,他们想预订比登天还难.中,尤其是在批量的DML的情形下会产生对应的碎片.以及B树高度会发生对应变化.因此能够 ...

  2. [转]Oracle 重建索引的必要性

    http://blog.csdn.net/leshami/article/details/23763963 索引重建是一个争论不休被不断热烈讨论的议题.当然Oracle官方也有自己的观点,我们很多DB ...

  3. Oracle监控用户索引使用情况,删除无用索引

    监控当前业务用户索引 一段时间后查询从未被使用的索引,删除无用索引 停止监控索引 1. 监控当前用户所有索引 得到监控所有索引的语句: select 'alter index ' || index_n ...

  4. oracle 监视索引是否使用

    公司的大数据产品已经升级了四个版本了,最新版本的数据计算,大部分从oracle迁移到hadoop中了. 但是也有客户使用旧版的系统,不过,不去管它.只说我管理的. 在我接过这个数据库管理的时候,发现有 ...

  5. Oracle中索引的使用 索引性能优化调整

    索引是由Oracle维护的可选结构,为数据提供快速的访问.准确地判断在什么地方需要使用索引是困难的,使用索引有利于调节检索速度. 当建立一个索引时,必须指定用于跟踪的表名以及一个或多个表列.一旦建立了 ...

  6. Oracle索引梳理系列(七)- Oracle唯一索引、普通索引及约束的关系

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  7. oracle唯一索引与普通索引的区别和联系以及using index用法

    oracle唯一索引与普通索引的区别和联系 区别:唯一索引unique index和一般索引normal index最大的差异是在索引列上增加一层唯一约束.添加唯一索引的数据列可以为空,但是只要尊在数 ...

  8. oracle建索引的可选项

    oracle中建索引可能大家都会,但是建索引是有几个选项参数却很少有人关注,在某些特殊环境下,可能会非常有用,下面一一说明: 1.NOSORT,记录排序可选项. 默认情况下,在表中创建索引的时候,会对 ...

  9. oracle 创建索引思考(转)

    在Oracle数据库中,创建索引虽然比较简单.但是要合理的创建索引则比较困难了. 笔者认为,在创建索引时要做到三个适当,即在适当的表上.适当的列上创建适当数量的索引.虽然这可以通过一句话来概括优化的索 ...

随机推荐

  1. (转)iOS被开发者遗忘在角落的NSException-其实它很强大

    转载自 http://www.jianshu.com/p/05aad21e319e iOS被开发者遗忘在角落的NSException-其实它很强大 字数597 阅读968 评论4 喜欢28 NSExc ...

  2. hdu_1003_Max Sum

    Max Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  3. Cocos2dx开发(4)——Windows环境创建Cocod2dx 3.2第一个项目HelloWorld

    本文内容:cocos2dx+VS2013环境下创建项目,部分代码简析.会的朋友可以略过. 前面简单安装了几个环境,程序完全可以顺利跑起来(其他的cocos-stadio这些需要用到再装) 1.命令行形 ...

  4. Android 学习手札(三) 视图(View)

    在Android 系统红,任何可视化组件都需要从android.view.View类继承.可以使用两种方式创建View对象. · 一种方式是使用XML来配置View的相关属性,然后使用相应的方法来装载 ...

  5. 从一个标准 url 里取出文件的扩展名

    在php预定义函数中有一个叫做"pathinfo()"的函数,专门用于返回文件路径信息的. 那好,我们就来看一下它能为我们做些什么?       语法:pathinfo($url_ ...

  6. JS+CSS实现选项卡功能

    [小小一记] 首先我们写一个选项卡的结构出来,包括tab和content: 首先是tab: <ul class="ttitle-box-tabs" id="tabs ...

  7. iOS: 属性列表介绍 Introduction to Property Lists

    iOS: 属性列表介绍 Introduction to Property Lists 从本质上说, 属性列表就是苹果的对象数据序列化与反序列化方式 属性列表使用几种数据类型把数据组织为键值表和值表 P ...

  8. vs2015安装没有wim32

    刚开始在官网上下载VS2015没在意太多,选择了默认安装,结果是没有win64的,所以就不能写c代码.默认安装很多库都没有,所以要什么都得下载.转载一篇文章

  9. Hibernate中的多对多关系详解(3)​

    前面两节我们讲到了一对一的关系,一对多,多对一的关系,相对来说,是比较简单的,但有时,我们也会遇到多对多的关系,比如说:角色与权限的关系,就是典型的多对多的关系,因此,我有必要对这种关系详解,以便大家 ...

  10. noip2014 考试总结

    noip:最初估分580,明间数据:570,初测估分:510-570,最终得分:570 这次noip怎么说呢,发挥的还是比较理想吧,不过还是犯了一些“低级错误”,虽然没有造成十分严重的后果,但是还是不 ...