Oracle 监控索引使用
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 监控索引使用的更多相关文章
- Oracle 重建索引脚本
该指数是一个有力的武器,以提高数据库的查询性能. 没有索引,喜欢同样的标签库没有书籍,找书,他们想预订比登天还难.中,尤其是在批量的DML的情形下会产生对应的碎片.以及B树高度会发生对应变化.因此能够 ...
- [转]Oracle 重建索引的必要性
http://blog.csdn.net/leshami/article/details/23763963 索引重建是一个争论不休被不断热烈讨论的议题.当然Oracle官方也有自己的观点,我们很多DB ...
- Oracle监控用户索引使用情况,删除无用索引
监控当前业务用户索引 一段时间后查询从未被使用的索引,删除无用索引 停止监控索引 1. 监控当前用户所有索引 得到监控所有索引的语句: select 'alter index ' || index_n ...
- oracle 监视索引是否使用
公司的大数据产品已经升级了四个版本了,最新版本的数据计算,大部分从oracle迁移到hadoop中了. 但是也有客户使用旧版的系统,不过,不去管它.只说我管理的. 在我接过这个数据库管理的时候,发现有 ...
- Oracle中索引的使用 索引性能优化调整
索引是由Oracle维护的可选结构,为数据提供快速的访问.准确地判断在什么地方需要使用索引是困难的,使用索引有利于调节检索速度. 当建立一个索引时,必须指定用于跟踪的表名以及一个或多个表列.一旦建立了 ...
- Oracle索引梳理系列(七)- Oracle唯一索引、普通索引及约束的关系
版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...
- oracle唯一索引与普通索引的区别和联系以及using index用法
oracle唯一索引与普通索引的区别和联系 区别:唯一索引unique index和一般索引normal index最大的差异是在索引列上增加一层唯一约束.添加唯一索引的数据列可以为空,但是只要尊在数 ...
- oracle建索引的可选项
oracle中建索引可能大家都会,但是建索引是有几个选项参数却很少有人关注,在某些特殊环境下,可能会非常有用,下面一一说明: 1.NOSORT,记录排序可选项. 默认情况下,在表中创建索引的时候,会对 ...
- oracle 创建索引思考(转)
在Oracle数据库中,创建索引虽然比较简单.但是要合理的创建索引则比较困难了. 笔者认为,在创建索引时要做到三个适当,即在适当的表上.适当的列上创建适当数量的索引.虽然这可以通过一句话来概括优化的索 ...
随机推荐
- ACM HDU 2044 一只小蜜蜂
Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数. 其中,蜂房的结构如下所示. Input 输入数据的第一 ...
- ffmpeg与RTMP流媒体连接用法(翻译) http://www.chinavideo.org/forum.php?mod=viewthread&tid=15423
最近浏览国外网站时候发现,翻译不准确的敬请谅解. 1.将文件当做直播送至liveffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/liv ...
- excel 无法打开文件,提示:向程序发送命令时出现问题
以下的方法以Excel为例,请一个一个的使用,总会有一个适合你的. 1 .兼容性 鼠标右击桌面Excel(或其他)的快捷方式,选“兼容性”,把以管理员身份运行此程序前的勾去掉,就一切ok 了. 如果桌 ...
- paramiko模块实现堡垒机
通过SSHClient 执行命令 """通过用户名密码验证""" import paramiko # 创建 SSH 对象 ssh = par ...
- python cookielib
# HttpClient.py is written by [xqin]: https://github.com/xqin/SmartQQ-for-Raspberry-Piimport cookiel ...
- 随机List中数据的排列顺序
把1000个数随机放到1000个位置. 这也就是一个简单的面试题.觉得比较有意思.就顺带写一下 举个简单的例子吧. 学校统一考试的时候 有 1000个人,然后正好有 1000个考试位置,需要随机排列 ...
- NET Core站点部署到Linux服务器
.NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上 今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站 ...
- iOS:实现表格填充和选择操作
功能:创建一个列表,用数组填充表格,并支持选择列表行 // // main.m // Hello // // Created by lishujun on 14-8-28. // Copyright ...
- SSL交互和握手过程
SSL消息按如下顺序发送: 1.Client Hello 客户发送服务器信息,包括它所支持的密码组.密码组中有密码算法和钥匙大小: 2.Server Hello 服务器选择客户和服务器都支持的密 ...
- Jquery的attr属性
在JS中设置节点的属性与属性值用到setAttribute(),获得节点的属性与属性值用到getAttribute(),而在jquery中,用一个attr()就可以全部搞定了,赞一个先 ^^ jque ...