- 浏览: 1200388 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 1946并发行级锁超2秒报警监控sql -
数据设计规范v
2010-06-22 19:47 0数据设计规范v -
Oracle 有趣排序包括那些
2010-06-20 16:51 1457按拼音排序 select * from table ... -
Oracle sql 性能优化调整
2010-06-20 16:15 1400Oracle sql ... -
Delete、Drop、Truncate的比较(转)
2010-05-31 13:39 1482Delete、Drop、Truncate的比较 关键字: d ... -
Oracle误操作解决方案(转)
2010-05-31 13:35 1398Oracle误操作解决方案 文章分类:数据库 一.误删除数 ... -
一个递归调用的存储过程
2010-04-19 01:51 1853一个递归调用的存储过程 -
Jdbc 和hibernate
2009-11-16 23:38 1880Jdbc 和hibernate 一、Jdbc是java ... -
去掉 powerDesigner 中表设计时的 name和code联动的功能
2009-11-16 17:04 3501去掉 powerDesigner 中表设计时的 name和co ... -
oracle数据库索引未被使用的问题及其解决2007
2009-11-15 01:42 2137一次,在进行WEB页面上进行历史数据文件检查时,发现数据库访问 ... -
RMAN配置及备份与恢复练习
2009-09-27 18:06 16281.创建表空间SQL>create tablespace ... -
误删除数据后怎么立即恢复(不考虑全库备份和利用归档日志)
2009-09-27 18:01 3389要达到删除数据,有以下几种方式都可以:1、delete2、dr ... -
IMP数据到指定的表空间
2009-09-27 12:47 9111IMP数据到指定的表空间 一直以来,我都认为只要指定用户的默 ... -
ORACLE UPDATE 语句语法与性能分析
2009-09-27 09:49 1885为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在 ... -
oracle job 例子
2009-09-22 12:38 3072一、设置初始化参 ... -
oracle 时间加减综合
2009-09-17 11:43 1986加法 select sysdate,add_mon ... -
详细介绍ORACLE sqlplus命令
2009-09-09 16:42 2066一、ORACLE的启动和关闭1、在单机环境下要想启动或关闭OR ... -
AWR介绍与SYSAUX空间关系 SYASAUX表空间满了 系统慢
2009-09-08 09:45 7983AWR介绍与SYSAUX空间关系 2007-11-05 14 ... -
to_char 'NLS_DATE_LANGUAG参数
2009-09-02 18:41 1488select to_char(sysdate, 'Day'), ... -
Oracle oracle 多语言排序
2009-08-17 14:43 1983Oracle9i之前,中文是按照二进制编码进行排序的。在ora ...
相关推荐
### Oracle学习总结 #### SQL基础语法 1. **数据定义语言(DDL)** - **创建表**:`CREATE TABLE table_name (column_name datatype constraints,...);` - `NOT NULL`:指定列不允许有空值。 - `UNIQUE`:指定列...
Oracle Index 学习总结 一、索引概述 索引是 Oracle 中用于提高查询速度的一种机制。索引需要储存空间和 I/O 操作。索引的目的是加快 Select 速度,但 Insert、Update、Delete 数据时 Oracle 会同时对索引进行相应...
本学习总结涵盖了Oracle的入门知识、全套命令及SQL语法,旨在为初学者提供全面的学习材料。以下是对这些主题的详细阐述: 一、Oracle入门总结 Oracle数据库的基本概念包括数据库实例、表空间、数据文件、控制文件、...
5. Oracle Index 的三个问题 6. Oracle PL-SQL语言基础 7. Oracle的分布式管理 8. ORACLE的数据类型 9. Oracle数据库碎片整理 10.ORACLE性能调整1 11.ORACLE性能调整2 12.Oracle专家调优秘密 13.PL...
这篇文档“Oracle数据库语法总结”旨在为用户提供一个全面的参考指南,帮助理解和掌握Oracle SQL的使用。 1. **数据定义语言(DDL)** - **创建表(CREATE TABLE)**:用于定义表的结构,包括字段名、数据类型、...
Oracle数据库是世界上最广泛使用的数据库系统之一,其日常操作对于DBA和系统管理员来说至关重要。...在实际工作中,结合具体的业务需求和问题,不断学习和实践,将使你成为更加专业的Oracle数据库管理员。
本文将基于“oracle 日常所用总结”的主题,深入探讨Oracle中的常用命令、触发器、游标、视图以及等待事件,旨在帮助用户更好地理解和应用这些关键概念。 1. **Oracle常用命令**: - 数据查询:`SELECT`语句是查询...
Oracle数据库是世界上最流行的数据库管理系统之一,广泛应用于企业级数据存储和管理。本篇文章将深入探讨Oracle的相关操作,帮助你...阅读“oracle相关操作.doc”和“oracle总结.docx”将为你提供更详细的指导和实例。
从给定的文件信息来看,这是一份...总结来说,Oracle的学习手册深入浅出地介绍了OLAP与OLTP的区别、索引的原理和使用技巧,为初学者提供了宝贵的指南。理解这些概念和技术,对于有效地管理和优化Oracle数据库至关重要。
### Oracle Index Internals #### 知识点概览 本文档深入探讨了Oracle数据库中的索引内部机制。主要内容包括各种类型的Oracle索引结构及其实施方式、索引的行为、维护策略以及成本基础优化器如何确定索引的使用...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其复杂性和深度使得学习过程中难免会遇到一些易错点。...在实践中不断学习和总结,提升数据库管理技能,对提升工作效率和保障系统稳定性至关重要。
### ORACLE学习手册和案例知识点总结 #### 一、ORACLE基础知识 ##### 1.1 ORACLE OLAP与OLTP介绍 **1.1.1 什么是OLTP** OLTP(Online Transaction Processing,在线事务处理)是针对业务系统的日常运作而设计的...
根据给定的信息,我们可以整理出以下关于Oracle数据库学习的重点知识点: ### 一、Oracle数据库启动与关闭 在Oracle数据库管理中,启动与关闭是基本的操作之一。这些操作可以通过SQL*Plus命令来完成。 #### 启动...
根据提供的文件信息,我们可以归纳出以下与Oracle数据库相关的知识点: ...对于Oracle数据库的学习和使用来说,这些都是非常基础且重要的内容。希望这些知识点能够帮助您更好地理解和掌握Oracle数据库的使用方法。
在 Oracle 中,存在多种表连接方式,如 Hash Join、Merge Join、Nest Loop Join、Index Join 等。选择合适的连接方式可以大大提高查询性能。 四、使用 CBO 优化器 CBO(Cost-Based Optimizer)是 Oracle 中的一种...
总结而言,这本手册涵盖了Oracle数据库的多个重要方面,从基础概念到高级特性都有所涉猎,适合初学者和有一定经验的数据库管理员作为参考资料。手册中的内容不仅包括了理论知识,还涉及到了具体的实现方法,如索引的...
Oracle 调优总结收藏 本文总结了 Oracle 数据库的调优方法,涵盖了数据库结构、索引、SQL 优化、执行计划、绑定变量等方面的知识点。通过学习这些内容,可以帮助读者更好地理解 Oracle 数据库的工作机理,并提高...
总结,Oracle数据库的学习是一个深度和广度兼具的过程,涵盖了从基础的SQL语法到复杂的数据库设计、性能优化和安全管理等多个方面。理解并熟练运用这些知识点,将有助于你成为一位专业的Oracle数据库管理员或开发者...