发新话题
打印

[原创]SQL下监控和跟踪索引使用情况

[原创]SQL下监控和跟踪索引使用情况

文章作者:Solitary[E.S.T]
信息来源:邪恶八进制 中国

PS:最近在学网络工程师,所以很少来E.S.T,在这里向个位兄弟问声好!

最近我在学校和老师探讨时,发现 Oracle 数据库所使用的索引从来没有达到过可用索引数的1/4,或者其用法与其开始设计的意图不相同。未用的索引浪费空间,而且还会降低 DML 的速度,尤其是 UPDATE 和 INSERT 语句。

Oracle9i提供一个简单的方法来打开和关闭索引使用跟踪,那就是MONITORING USAGE 子句:

alter index cust_name_idx monitoring usage;
alter index cust_name_idxnomonitoring usage;

这个命令使用V$OBJECT_USAGE 视图和 USAGE 字段来判断索引是否被访问过。你可能期望 USAGE 字段是一个数字值,这样你就可以知道索引被使用的次数,但不幸的是,它的取值只为YES 或NO。

但不管怎样,如果你接手一个以前开发的数据库,而且老数据库在没有考虑到 SQL 访问表的情况下创建了索引,那么这个工具对你是很有用的。INDEX MONITORING 特性的开销非常小,而对定位和丢弃不需要的索引很有帮助。

下面是一个打开整个方案的索引监控的简单 SQL*Plus 脚本:

set pages 999
set heading off

spool run_mon.sql

select
'alter index '||
index_name||
' monitoring usage;'
from
dba_indexes
where
owner = 'SCOTT';

spool off

@run_mon

这篇文章,就是在学习时写出来的!
没有什么技术含量!

TOP

发新话题