Oracle管理索引.ppt_第1页
Oracle管理索引.ppt_第2页
Oracle管理索引.ppt_第3页
Oracle管理索引.ppt_第4页
Oracle管理索引.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、离DEADLINE还有35天,管理索引,目标,完成这一课的学习后,您应该能达到下列目标: 列出各种类型的索引及其用途 创建各种类型的索引 重新组织索引 维护索引 监视索引的使用,索引分类,逻辑 单列或串接 唯一或非唯一 基于函数 物理 分区或非分区 B 树 正常或反向键 位图,B 树索引,索引项标题,键列长度,键列值,行标识,根,分支,叶,索引项,B 树索引,索引叶项的特征: 在非分区表上的 B 树索引中: 如果多行具有相同的键值,除非对索引进行了压缩,否则键值重复。 对于所有键列都为 NULL 的行,没有对应的索引项。因此, WHERE 子句中索引所在的列值为 NULL,则始终进行全表扫描。

2、 因为所有行都属于同一段,所以使用受限行标识指向表中的行。 DML 操作对索引的影响: 在表上执行 DML 操作时,Oracle 服务器将维护所有的索引。下面解释 DML 命令对索引的影响: 插入操作导致在对应的索引块中插入索引项。 删除行只导致逻辑删除索引项。删除的行所用的空间仍不能用于新项,直到删除块中的所有项。 更新键列将导致逻辑删除和向索引插入项。,位图索引,关键字,开始 行标识,结束 行标识,位图,表,索引,块 10,块 11,块 12,文件 3,位图索引的结构,位图索引也是一种 B 树结构,但叶节点存储每个键值的位图而非行标识列表。位图中的每一位对应一个可能的行标识,如果被置位,则

3、意味着具有相应行标识的行包含键值。 如图所示,位图索引的叶节点包含下列几项: 项标题,包含行数和锁的信息 键值由每个键列的 “长度 - 值” 双值组成(本例中,关键字仅包含一列,第一项的键值为 “学士”)。 开始行标识,本例中的开始行标识包含文件号 3、块号 10 和行号 0 结束行标识,本例中的结束行标识包含文件号 3、块号 12 和行号 8 位图段,由位串组成(对应的行包含键值时设置位;不包含键值时不设置位。Oracle 服务器使用专利压缩技术存储位图段。),比较 B 树索引和 位图索引,B 树 适用于高基数列 更新关键字的成本相对较低 使用 OR 谓词进行查询时效率较低 对 OLTP 很

4、有用,位图 适用于低基数列 更新键列的成本非常高 使用 OR 谓词进行查询时效率较高 对数据仓库很有用,创建索引:原则,平衡查询和 DML 存放在单独的表空间中 使用统一的区大小:块数是 5 的倍数或对表空间使用 MINIMUM EXTENT 大小 对于大型索引,请考虑使用 NOLOGGING 通常,INITRANS 在索引中比在对应的表中高。,创建索引,CREATE UNIQUE|BITMAP INDEX 用户名.索引名 ON 用户名.表名 (列名 ASC|DESC ,列名 ASC|DESC ) TABLESPACE 表空间名 PCTFREE 正整数值 INITRANS 正整数值 MAXTR

5、ANS 正整数值 存储子句 LOGGING | NOLOGGING NOSORT ,创建索引,PCTFREE:创建索引时为容纳新的索引项而在每块中保留的空间大小 INITRANS:指定每块中预先分配的事务处理项的数目(缺省值和最小值为 2。) MAXTRANS:限制可以为每个块分配的事务处理项数(缺省值为 255。) STORAGE 子句:标识确定如何为索引分配区的存储子句 LOGGING:指定在重做日志文件中记录索引创建操作和在索引上执行的后续操作(这是缺省值。) NOLOGGING:指定在重做日志文件中不记录创建操作和某些类型的数据加载操作 NOSORT:指定将行按升序存储在数据库中,这样

6、,Oracle 服务器在创建索引时不必对行进行排序,创建正常的 B 树索引,create index c_name on course(cname) storage( initial 100k next 100k maxextents 100) tablespace test1;,创建位图索引,create bitmap index c_name on course(cname) storage( initial 100k next 100k maxextents 100) tablespace test1;,分配和回收索引空间,ALTER INDEX schema.index ALLOCAT

7、E EXTENT (SIZE integer K|M DATAFILE filename ) | DEALLOCATE UNUSED KEEP integer K|M ,分配和回收索引空间,ALTER INDEX c_name ALLOCATE EXTENT (SIZE 200K DATAFILE );,ALTER INDEX c_name DEALLOCATE UNUSED;,重建索引,ALTER INDEX schema. index REBUILD TABLESPACE tablespace PCTFREE integer INITRANS integer MAXTRANS intege

8、r storage-clause LOGGING| NOLOGGING REVERSE | NOREVERSE ALTER INDEX .REBUILD 命令不能用于将位图索引更改为 B 树索引,反之亦然。只能为 B 树索引指定 REVERSE 或 NOREVERSE 关键字。,重建索引,使用 ALTER INDEX 命令执行以下操作: 将索引移到另一个表空间中 通过移除已删除的项,提高空间的使用率,ALTER INDEX orders_region_id_idx REBUILDTABLESPACE indx02;,联机重建索引,可以使用最小限度的表锁定来重建索引。 限制: 不能在临时表中重建

9、索引 不能重建整个分区索引。必须分别重建每个分区或子分区。 也不能回收未用空间。 不能整个更改索引的 PCTFREE 参数值。,ALTER INDEX orders_id_idx REBUILD ONLINE;,合并索引,合并前,合并后,ALTER INDEX c_name COALESCE;,检查索引及其有效性,ANALYZE INDEX c_name VALIDATE STRUCTURE;,INDEX_STATS,SELECT blocks, pct_used, distinct_keys, lf_rows, del_lf_rows FROM index_stats; 如果索引中已删除行的

10、比例很高,请重新组织该索引。例如:当 DEL_LF_ROWS 占 LF_ROWS 的比率超过 30% 时,标识索引,要开始监视索引的使用,请执行以下语句: 要停止监视索引的使用,请执行以下语句: 查看索引使用情况,ALTER INDEX c_name MONITORING USAGE;,ALTER INDEX c_name NOMONITORING USAGE;,SELECT * FROM V$OBJECT_USAGE;,删除索引,在批量加载前,请删除并重新创建索引。 删除不常用的索引,并在需要时创建这些索引。 删除并重新创建无效的索引。,DROP INDEX C_NAME;,获取索引信息,可以通过查询以下视图来获取有关索引的信息: DBA_INDEXES:提供有关索引的信息 DBA_IND_COLUMNS:提供有关索引

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论