oracle如何进行索引监控分析和优化
在生产环境、我们会发现:
① 索引表空间 I/O 非常高
② "db file sequential read" 等待事件也比较高
这种迹象表明、整个数据库系统、索引的读写操作比较多、已经成为系统的主要瓶颈
一般的原因、大抵如下:
① 大量SQL均采用索引
② DML操作导致索引维护工作量暴增
③ 频繁DML导致很多索引碎片、增加I/O开销
④ 索引建立策略失误、走索引如同全表扫
如果、一张表字段30个、但索引竟有 50个!?
作为 DBA、你可能不了解业务逻辑、不敢删、也不知该删哪些、怎么办?
建议综合采用如下两种策略:
⑴ 根据原理去判断
这种情况肯定存在很多复合索引!依据复合索引的前缀性和可选性两大原理
分析这 50 个索引的具体字段的分布情况、自己做出合并、整合的判断
⑵ 利用 Oracle 索引监控特性
在典型业务周期开始之前、执行:
ora@node1> alter index <索引名> monitoring usage;
在典型业务周期结束之后、执行:
ora@node1> alter index <索引名> nomonitoring usage;
然后、查询:
ora@node1> select * from v$object_usage;
这样子、你就知道在这个典型周期之内、这个索引到底有木有用了
即便是这样了、可是、友情提示两下、上面的结论不一定正确、因为:
① 10g在收集统计信息时会导致索引被监控、这并非SQL语句产生、而在11g则不会出现这种情况了
② 外键索引不会因为主表的DML操作而被监控到、不要因为该索引没用而将它给删了
不过、这里、毕竟还会有个问题、对于一个复杂系统来说,索引的数量可能是庞大的
那么、我们该如何选择嫌疑对象、减少监控范围呢?
以下介绍两种方法:
① 利用 library cache 数据
在library cache中,存储了系统中游标的查询计划(并非全部,受library cache大小的限制)
通过视图v$sql_plan,我们可以查询到这些数据。利用这些数据,我们可以排除那些出现在查询计划中的索引:
- select a.object_owner, a.object_name
- from v$sql_plan a, v$sqlarea b
- where a.sql_id = b.sql_id and a.object_type='INDEX' and
- b.last_load_time > <START_AUDIT_DATE>
② 利用 AWR 数据
10g以后,我们可以借助 AWR 分析哪些索引被使用到了
- select b.object_owner, b.object_name
- from dba_hist_snapshot a, dba_hist_sql_plan b, dba_hist_sqlstat c
- where a.snap_id = c.snap_id and
- b.sql_id=c.sql_id and
- b.object_type = 'INDEX' and
- a.startup_time > <START_AUDIT_DATE>
利用上述方法,过滤掉大部分肯定被使用的index后,再综合应用,选择可疑索引进行监控,找出并删除无用索引,为数据库减肥
频繁对索引字段进行 DML操作、会对索引造成大量碎片、从而极大影响索引的使用效率、并造成索引I/O的增加
那么如何进行索引碎片的分析和整理呢?
执行如下语句可监测索引的碎片情况:
analyze index <索引名> validate structure online;
select name,(del_lf_rows_len/lf_rows_len)*100 from index_stats;
其中、索引碎片率(%)=(del_lf_rows_len/lf_rows_len)*100
如果索引碎片率超过20%、则Oracle认为索引碎片已经非常严重
建议DBA编写一个检测所有索引碎片率的脚本、定期运行、保持对索引碎片率的监测
因为、进行索引碎片分析和整理是DBA日常维护的工作之一
Oracle 进行索引碎片的处理包括两种策略:
① 重建索引
alter index <索引名> rebuild;
② 压缩索引
alter index <索引名> coalesce;
不过、Rocky 建议大家采取定期索引重建的策略、例如可在每个周末或者每天夜晚对挥发表的索引进行在线重建
本文转自:http://blog.csdn.net/dba_waterbin/article/details/8805010
oracle如何进行索引监控分析和优化的更多相关文章
- Web服务器性能监控分析与优化
Web服务器性能监控分析与优化 http://www.docin.com/p-759040698.html
- Oracle表与索引的分析及索引重建
1.分析表与索引(analyze 不会重建索引) analyze table tablename compute statistics 等同于 analyze table tablename co ...
- mysql性能优化-慢查询分析、优化索引和配置
一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1) max_connec ...
- ORACLE索引监控的简单使用
--ORACLE索引监控的简单使用-------------------------2013/11/20 说明: 应用程序在开发时,可能会建立众多索引,但是这些索引的使用到底怎么样,是否有些索 ...
- [转]Oracle 索引质量分析
http://blog.csdn.net/leshami/article/details/23687137 索引质量的高低对数据库整体性能有着直接的影响.良好高质量的索引使得数据库性能得以数量级别的提 ...
- [转]mysql性能优化-慢查询分析、优化索引和配置
一. 优化概述 MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候.磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在 ...
- mysql性能优化-慢查询分析、优化索引和配置 (慢查询日志,explain,profile)
mysql性能优化-慢查询分析.优化索引和配置 (慢查询日志,explain,profile) 一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 ...
- mysql性能优化-慢查询分析、优化索引和配置【转】
一.优化概述 二.查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三.配置优化 1) max_connec ...
- 41.oracle索引,分析索引,索引碎片整理
概述 索引分为B树索引和位图索引.我们主要研究B树索引,B树索引如下图(图片源自网络):
随机推荐
- APP专项测试 | 内存及cpu
命令: adb shell dumpsys meminfo packagename 关注点: 1.Native/Dalvik 的 Heap 信息 具体在上面的第一行和第二行,它分别给出的是JNI层和 ...
- [POJ 2373][BZOJ 1986] Dividing the Path
Link: POJ 2373 传送门 Solution: 一开始想错方向的一道简单$dp$,不应该啊…… 我一开始的想法是以$cows' ranges$的节点为状态来$dp$ 但明显一个灌溉的区间的两 ...
- 每天一个liunx命令4之 ps -ef ,ps -aux ,ps aux
1ps aux和ps –aux 请注意"ps -aux"不同于"ps aux".POSIX和UNIX的标准要求"ps -aux"打印用户名为 ...
- Stub, Mock and Proxy Testing
Table of Contents Stubs, Mocks, and Proxies Stub, Mock, and Proxy Testing with Testimonial Mock test ...
- 【微信】微信小程序 新建页面目录后,怎么自动生成目中的的四个基本文件呢? 新建目录报错如下VM458:2 未找到 app.json 中的定义的 pages "pages/module/module" 对应的 WXML 文件
如下图,在使用微信开发者工具过程中,新创建了页面目录,想要页面文件夹中自动生成四个基本文件 但是新创建了一个页面文件夹,里面的四个基本文件并没有展示出来 然后在app.json添加这个路径,ctrl+ ...
- Google Xpath Helper
下载方法: 1. 访问http://chrome-extension-downloader.com/ 2. 把https://chrome.google.com/webstore/detail/xpa ...
- 自动生成logo的网址
1.https://www.logaster.com/logo/
- 关于在SSH2中使用ajax技术的总结(主要写Struts2和ajax)
以下内容是自己理解的,因为还没有看过相关的文章,所以,技术上还是有很大的欠缺.不过这也是自己努力思考得到的,如果有什么更好的建议可以回复我. 1. 任务需求: 实现一个包含数据的表格,并且有分页功能. ...
- 在linux下玩转usb摄像头
硬件平台:PC机一台 .usb摄像头 操作系统:Linux3.0.8 交叉编译环境:arm-none-Linux-gnueabi-gcc 4.5.1 调试步骤: 一.linux 内核解压 1.1使用 ...
- asp.net限制用户登录错误次数
很经常在登录一个网站的时候看到,如果你登录的时候输入的账号密码错误超过三次就被锁定,然后等一段时间才能继续登录,最最经常使用的就是银行系统啦~~ 该功能处理流程如下: string uid = Req ...