- 浏览: 1183335 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (361)
- java综合 (33)
- 项目管理 (10)
- 工作流 (6)
- spring (11)
- hibenate (17)
- struts (0)
- javascript,html,css,ajax,jquery (11)
- IDE (9)
- 生活 (0)
- 工作 (0)
- 杂记 (1)
- 数据库 (96)
- 服务器 (5)
- 可视编辑 (0)
- freemarker (6)
- 操作系统 windows (13)
- web页面 (6)
- jms (15)
- 调优 (4)
- 测试和bug管理 (2)
- 原理 (1)
- 項目-atf (17)
- 安全 (3)
- xml (4)
- 操作系统 liunx (21)
- 网络 (22)
- office (11)
- 设计 (2)
- 软件 (1)
- 数据库 mysql (6)
- 胖客户端-flex (1)
- 正则 (9)
- oracle- liunx (3)
- sql2000 (2)
- 模式 (1)
- 虚拟机 (2)
- jstl (2)
- 版本控制 打包工具 (0)
- AOP (1)
- demo (1)
- 小软件 (2)
- 感恩 (1)
- iphone 4 (1)
- 反欺诈业务经验整理 (0)
最新评论
-
sea0108:
mark
java内存模型 -
XingShiYiShi:
方便把:testPNR();具体实现发出来吗?谢谢
用正则表达式解析 航信的电子客票和pnr报文 -
wh359126613:
如果js和webservice不在同一个服务器上,有跨域问题如 ...
使用javascript调用webservice示例 -
雨飛雁舞:
...
oracle 动态性能(V$)视图 -
ouyang1224:
好东西
oracle 动态性能(V$)视图
oracle index
1.index需要储存空间和I/O操作。
2.index的目的是加快select的速度的。
3.insert,update,delete数据oracle会同时对索引进行相应的调整,因此会增加一定的消耗。
4.使用index一定能加快select速度吗?不是的,数据少和巨大时index会影响select的速度,因此如果查询速度可以满足,就不要建index。
5.Index 对null 无效。
分类:
一、从物理角度
1. partitioned or nonpartitioned : 分区或不分区索引。分区索引用于分区表。
2.B-tree(平衡树) : normal or reverse key 正常和倒序索引。
oracle默认索引方式,平衡树形索引,在叶子节点上有双向链表,加快索引定位速度,oracle有一定的优化,可以根据链表直接定位记录,而不走树,综合使用提高速度。见图1和图2。
图1
图2
3.bitmap(位图) :用二进制的0、1来构建索引,在进行or操作时非常快, 但要注意bitmap对于并发操作时,改一条会锁了很多记录,因为所有的记录在一个索引条目上,所以修改或增加时会一起锁定,见图3.
图3
区别和使用场景
B-tree索引 |
Bitmap 索引 |
Suitable for high-cardinality columns(记录对应的列重复的值较少,如主键,姓名等 )。 |
Suitable for low-cardinality columns(用在记录相同的值较多的列上,如果性别只有两种值:男和女)。 |
Updates on keys relatively inexpensive (在做updated时,b-tree只消耗很少的资源)。 |
Updates to key columns very expensive (在做updated时,bitmap的消耗是昂贵的)。 |
Inefficient for queries using OR predicates(where子句中 or条件较多时速度较慢) |
Effcient for queries using OR predicates (where子句中 or条件较多时速度非常快) |
Useful for OLTP(记录频繁的insert和update,查询相对较少的系统)。 |
Useful for data warehousing (OLIP)数据仓库,查询系统等较少做数据修改的系统。 |
二、逻辑角度:
1.single column or concatenated单索引和组合索引。
2.unique or nonunique: 唯一索引和非唯一索引。
3.function-based: 基于函数的索引,把一些where条件作为函数。
4.domain: 数据库以外的索引,如文件等。
三、创建index时的注意事项:
1.balance query and DML needs: 索引的目的是为了提高查询速度,但它会加重DML的负担。
2.place in separate tablespace: 索引和表应该放在不同的表空间,如果把索引和表放在同一个空间,会引起竞争,因为在读取一个表时,记录和索引是同时读取,修改也同步进行的。
3.use uniform extent sizes:Multipes of five blocks or minimum extent size for tablespace. 索引空间是extent是大小应该是5 blocks的倍数,因为oracle是一次读出5个blocks,如果你的extends是6,就会造成2次I/O操作。
4. consider nologging for large indexes: 在创建索引时可以关闭索引对应的redo 日志,提高速度,因为索引和数据不同,如果索引创建时出意外,数据还在,就再创建一次好了。
5.INITRANS should generally be higher on indexes than on the corresponding tables:INITRANS 参数比对应的表的值大些,因为索引也是已表记录的方式保存的,但索引大大小于表的记录,所以一个block中存储的索引记录就大大多于表在一个block中的记录,加大INITRANS可以增加在一个block中的事务的并发数,就提高了效率。
6.rebuilding indexes:如果删除一条记录,对应的索引仅仅是做了逻辑删除,只有一个block中的全部索引都被标识为逻辑删除,orcle才会真正的回收block, 这时这个block才能被再次利用,在表的记录做update时,index是先做了逻辑删除,然后再为该记录新建一个索引的,所以表在频繁的增删改后,就会造成index对应的block不完整,和系统碎片的情况是一致的,造成空间浪费,加大index的I/O,影响性能。而rebuilding indexes就可以回收原来的,重新构建一个高效的索引,但重构时会锁表。
语法: alter index index_name rebuild;
7. coalescing indexes: 整理索引碎片,效率高,不锁表。
语法:Alter index index_name coalesce;
四.管理索引
1.分析索引:
1) select * from user_objects where object_type='INDEX'
2)analyze index PK_T_TICKET validate structure;
3)select * from index_stats;
HEIGHT(b-tree的高度) |
BLOCKS(索引有多少块) |
NAME(索引名) |
LF_ROWS(记录数) |
DEL_LF_ROWS(删除记录数) |
2 |
256 |
PK_T_TICKET |
82775 |
792 |
当 DEL_LF_ROWS/ LF_ROWS>15%时应进行 索引重建或 索引碎片整理。
2.drop 索引:当屁量导入大量数据时,索引会影响导入速度。可以现在drop掉,导入后再重建索引。
3.监控索引:
1)设置监控那个索引 alter index pk_t_ticket monitoring usage;
2)查看该索引用没有使用select * from v$object_usage
3)select count(1) from pk_t_ticket;
4) 查看该索引用没有使用select * from v$object_usage
5)关闭监控 alter index pk_t_ticket nomonitoring usage;
监控一个月就大概可以知道那些是无用的索引了。
6) 查询索引的详细信息 : select * from all_ind_columns where index_name='PK_T_TICKET' .那个表的那个列上有索引及详细信息。
发表评论
-
并发行级锁超2秒报警监控sql
2010-07-20 16:18 1872并发行级锁超2秒报警监控sql -
数据设计规范v
2010-06-22 19:47 0数据设计规范v -
Oracle 有趣排序包括那些
2010-06-20 16:51 1396按拼音排序 select * from table ... -
Oracle sql 性能优化调整
2010-06-20 16:15 1359Oracle sql ... -
Delete、Drop、Truncate的比较(转)
2010-05-31 13:39 1439Delete、Drop、Truncate的比较 关键字: d ... -
Oracle误操作解决方案(转)
2010-05-31 13:35 1360Oracle误操作解决方案 文章分类:数据库 一.误删除数 ... -
一个递归调用的存储过程
2010-04-19 01:51 1800一个递归调用的存储过程 -
Jdbc 和hibernate
2009-11-16 23:38 1836Jdbc 和hibernate 一、Jdbc是java ... -
去掉 powerDesigner 中表设计时的 name和code联动的功能
2009-11-16 17:04 3440去掉 powerDesigner 中表设计时的 name和co ... -
oracle数据库索引未被使用的问题及其解决2007
2009-11-15 01:42 2100一次,在进行WEB页面上进行历史数据文件检查时,发现数据库访问 ... -
RMAN配置及备份与恢复练习
2009-09-27 18:06 15991.创建表空间SQL>create tablespace ... -
误删除数据后怎么立即恢复(不考虑全库备份和利用归档日志)
2009-09-27 18:01 3353要达到删除数据,有以下几种方式都可以:1、delete2、dr ... -
IMP数据到指定的表空间
2009-09-27 12:47 9061IMP数据到指定的表空间 一直以来,我都认为只要指定用户的默 ... -
ORACLE UPDATE 语句语法与性能分析
2009-09-27 09:49 1844为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在 ... -
oracle job 例子
2009-09-22 12:38 3036一、设置初始化参 ... -
oracle 时间加减综合
2009-09-17 11:43 1957加法 select sysdate,add_mon ... -
详细介绍ORACLE sqlplus命令
2009-09-09 16:42 2021一、ORACLE的启动和关闭1、在单机环境下要想启动或关闭OR ... -
AWR介绍与SYSAUX空间关系 SYASAUX表空间满了 系统慢
2009-09-08 09:45 7840AWR介绍与SYSAUX空间关系 2007-11-05 14 ... -
to_char 'NLS_DATE_LANGUAG参数
2009-09-02 18:41 1438select to_char(sysdate, 'Day'), ... -
Oracle oracle 多语言排序
2009-08-17 14:43 1927Oracle9i之前,中文是按照二进制编码进行排序的。在ora ...
相关推荐
5. Oracle Index 的三个问题 6. Oracle PL-SQL语言基础 7. Oracle的分布式管理 8. ORACLE的数据类型 9. Oracle数据库碎片整理 10.ORACLE性能调整1 11.ORACLE性能调整2 12.Oracle专家调优秘密 13.PL...
作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...
在 printf 里面,输出有5个部分 %[argument_index$][flags][width][.precision]conversion 以“%”开头,[第几个数值$][flags][宽度][.精确度][格式] printf()的引入是为了照顾c语言程序员的感情需要 格式化输出...
总结 2. 安装和运行Maven 2.1. 验证你的Java安装 2.2. 下载Maven 2.3. 安装Maven 2.3.1. 在Mac OSX上安装Maven 2.3.2. 在Microsoft Windows上安装Maven 2.3.3. 在Linux上安装Maven 2.3.4. 在FreeBSD或...
{1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {1.4.1}整数与浮点数}{23}{subsection.1.4.1} {1.4.1.1}浮点数原理}{24}{subsubsection.1.4.1.1} {1.4.2}格式化输出浮点数}{24}{...
21天学习SQL V1.0.pdf 66 SQL 21 日自学通(V1.0) 翻译人笨猪 EMAIL wyhsillypig@163.com 2 日期/时间函数.........................................................................................................
忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中的异常 与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,...
-测试总结和报告。 一个好的测试管理工具应该能把以上几个阶段都管理起来。 测试人员每时每刻都在度量别人的工作成果,而测试人员的工作成果又由谁来度量呢?度量的标准和依据是什么呢?软件测试的度量是测试...
│ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...
│ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...
│ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...
│ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...
│ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...