网站大量收购独家精品文档,联系QQ:2885784924

Oracle表空间索引存储与碎片检查.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle表空间索引存储与碎片检查.doc

Oracle 表空间索引存储与碎片检查 Oracle 表空间索引存储检查,Oracle 表空间索引碎片查看,包括查看系统表中的用户索引、索引的存储情况检查、索引的选择性、确定索引的实际碎片。 1、查看系统表中的用户索引 在 Oracle 中,SYSTEM 表是安装数据库时自动建立的,它包含数据库的全部数据字典 Oracle 表空间索引存储检查,Oracle 表空间索引碎片查看,包括查看系统表中的用户索引、索引的存储情况检查、索引的选择性、确定索引的实际碎片。 1、查看系统表中的用户索引 在 Oracle 中,SYSTEM 表是安装数据库时自动建立的,它包含数据库的全部数据字典,存储过程、包、函数和触发器的定义以及系统回滚段。一般来说,应该尽量避免在 SYSTEM 表中存储非 SYSTEM 用户的对象。因为这样会带来数据库维护和管理的很多问题。一旦 SYSTEM 表损坏了,只能重新生成数据库。我们可以用下面的语句来检查在 SYSTEM 表内有没有其他用户的索引存在。 以下为引用内容: SELECT * FROM dba_indexes WHERE tablespace_name = SYSTEM AND owner NOT IN (SYS, SYSTEM) 2、索引的存储情况检查 Oracle 为数据库中的所有数据分配逻辑结构空间。数据库空间的单位是 block 、extent 和 segment 。 Block :Oracle 使用和分配的最小存储单位。由数据库建立时设置的 DB_BLOCK_SIZE 决定的。一旦数据库生成了,数据块的大小不能改变。要想改变只能重新建立数据库。 Extent :由一组连续的 block 组成的。一个或多个 extent 组成一个 segment 。当一个 segment 中的所有空间被用完时,Oracle 为它分配一个新的 extent 。 Segment :是由一个或多个 extent 组成的。它包含某表空间中特定逻辑存储结构的所有数据。一个段中的 extent 可以是不连续的,甚至可以在不同的数据文件中。 表空间(tableSpace) 段(segment) 盘区(extent) 块(block) 存储层次关系 一个 object 只能对应于一个逻辑存储的 segment ,我们通过查看该 segment 中的 extent ,可以看出相应 object 的存储情况。 1. 查看索引段中 extent 的数量 以下为引用内容: SELECT segment_name, COUNT ( * ) FROM dba_extents WHERE segment_type = INDEX AND owner = UPPER (NEWCCS) GROUP BY segment_name 2. 查看表空间内的索引的扩展情况 以下为引用内容: SELECT SUBSTR (segment_name, 1, 20) SEGMENT NAME, bytes, COUNT (bytes) FROM dba_extents WHERE segment_name IN (SELECT index_name FROM dba_indexes WHERE tablespace_name = UPPER (NEWCCS)) GROUP BY segment_name, bytes ORDER BY segment_name 3、索引的选择性 索引的选择性是指索引列中不同值的数目与表中记录数的比。如果一个表中有 2000 条记录,表索引列有 1980 个不同的值,那么这个索引的选择性就是 1980/2000=0.99 。一个索引的选择性越接近于1,这个索引的效率就越高。 如果是使用基于 cost 的最优化,优化器不应该使用选择性不好的索引。如果是使用基于 rule 的最优化,优化器在确定执行路径时不会考虑索引的选择性(除非是唯一性索引),并且不得不手工优化查询以避免使用非选择性的索引。 确定索引的选择性,可以有两种方法:手工测量和自动测量。 1. 手工测量索引的选择性 如果要根据一个表的两列创建两列并置索引,可以用以下方法测量索引的选择性: 列的选择性=不同值的数目/行的总数 /* 越接近1越好 */ 以下为引用内容: select count(distinct 第一列||%||第二列)/count(*) from 表名 如果我们知道其中一列索引的选择性(例如其中一列是主键),那么我们就可以知道另一列索引的选择性。手工方法的优点是在创建索引前就能评估索引的选择性。 2. 自动测量索引的选择性 如果分析一个表,也会自动分析所有表的索引。 ? 为了确定一个表的确定性,就要分析表。 以下为引用内容: analy

文档评论(0)

000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档