Oracle中找出无用的索引提高DML性能
来源:互联网 发布:自己如何制作软件 编辑:程序博客网 时间:2024/06/10 09:54
2007-03-07 12:25
DML性能低下,其中最严重的原因之一是无用索引的存在。所有SQL的插入,更新和删除操作在它们需要在每一行数据被改变时修改大量索引的时候会变得更慢。
许多Oracle 管理人员只要看见在一个SQL 查询的WHERE语句出现了一列的话就会为它分配索引。虽然这个方法能够让SQL运行得更快速,但是基于功能的Oracle 索引使得数据库管理人员有可能在数据表的行上过度分配索引。过度分配索引会严重影响关键Oracle 数据表的性能。
在Oracle9i出现以前,没有办法确定SQL查询没有使用的索引。让我们看看Oracle9i提供了什么样的方法让你找到这些索引并删除它们。
过程是相当简单的。Oracle9i有一个工具能够让你使用ALTER INDEX命令监视索引的使用。然后你可以查找这些没有使用的索引并从数据库里删除它们。
下面是一段脚本,它能够打开一个系统中所有索引的监视功能:
QUOTE:
你需要等待一段时间直到在数据库上运行了足够多的SQL语句以后,然后你就可以查询新的V$OBJECT_USAGE视图。
QUOTE:
在V$OBJECT_USAGE有一列被称作USED,它的值是YES或者NO。不幸的是,它不会告诉你Oracle使用了这个索引多少次,但是这个工具对于找出没有使用的索引还是很有用的。
许多Oracle 管理人员只要看见在一个SQL 查询的WHERE语句出现了一列的话就会为它分配索引。虽然这个方法能够让SQL运行得更快速,但是基于功能的Oracle 索引使得数据库管理人员有可能在数据表的行上过度分配索引。过度分配索引会严重影响关键Oracle 数据表的性能。
在Oracle9i出现以前,没有办法确定SQL查询没有使用的索引。让我们看看Oracle9i提供了什么样的方法让你找到这些索引并删除它们。
过程是相当简单的。Oracle9i有一个工具能够让你使用ALTER INDEX命令监视索引的使用。然后你可以查找这些没有使用的索引并从数据库里删除它们。
下面是一段脚本,它能够打开一个系统中所有索引的监视功能:
set pages 999;
set heading off;
spoolrun_monitor.sql
select
'alter index '||owner||'.'||index_name||' monitoring usage;'
from
dba_indexes
where
owner not in ('SYS','SYSTEM','PERFSTAT')
;
spool off;
@run_monitor
你需要等待一段时间直到在数据库上运行了足够多的SQL语句以后,然后你就可以查询新的V$OBJECT_USAGE视图。
select
index_name,
table_name,
mon,
used
from
v$object_usage;
在V$OBJECT_USAGE有一列被称作USED,它的值是YES或者NO。不幸的是,它不会告诉你Oracle使用了这个索引多少次,但是这个工具对于找出没有使用的索引还是很有用的。
- Oracle中找出无用的索引提高DML性能
- 清除Oracle中无用索引 改善DML性能
- 教你清除Oracle中无用的索引改善DML
- 快速找出数据库的性能问题之:缺失索引 &无用的索引
- oracle 函数索引 提高性能
- oracle 性能优化操作九: 屏蔽无用索引
- oracle 性能优化操作九: 屏蔽无用索引
- ORACLE DML 事务中索引维护在里面?
- Android 如何找出项目中无用多余的资源
- Oracle中索引的使用 索引性能优化调整
- Oracle中常用的DML语句
- oracle中DDL DML DCL的区别
- Oracle 通过复合索引提高查询性能的一个真实客户例子
- [Oracle] 一个通过添加本地分区索引提高SQL性能的案例
- apply提高数组找出最大最小值的方式(性能)
- Oracle中DML语句
- 提高Lucene索引性能
- 提高LUCENE索引性能
- librarycachelock的解决案例
- 蜘蛛/爬虫程序的多线程控制(C#语言)
- 使用sql-server进行分布式查询(链接服务器)
- NS相关的工具和资源
- 正则表达式获取HTML标记中的内容(C#)
- Oracle中找出无用的索引提高DML性能
- JSP的内置对象的调用函数介绍
- 从中导入/导出的基本方法
- 在JSP页面中获取当前系统时间
- 连接中的三个最常见错误:
- 我的第一个blog
- PowerDesigner脚本:设置实体快捷方式的颜色
- "post/get"的区别
- PowerDesigner脚本:删除无用的DataItems