您当前的位置: 首页 > 数据库教程 > Oracle教程 > Oracle监控索引怎么使用

Oracle监控索引怎么使用

作者:不详 来源:网络 发布时间: 2014-09-01 11:58 点击:
Oracle监控索引使用 Oracle提供一个监控索引的方法,来确定索引是否被使用。如果索引没有被使用,就可以删除它们以减少不必要的语句的开销。因为表上的大量不必要的索引可能会降低DML语句的性能,给数据库性能产生压力。所以生产环境上,以根据业务增长情况定期监控、

Oracle监控索引怎么使用

  Oracle监控索引使用

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

  

  

  

  

  

  

  

  


  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  


  --查看表上的索引

  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表示开启索引监控的结束时间

  

  

  

  

  

  

  

  


  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  32

  33

  34

  35

  36

  37

  38

  39

  40

  41

  42

  43

  44

  45

  46

  47

  48

  49

  50

  51

  


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

  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监控索引怎么使用"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 广告合作 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4