analyze index...

analyzeindex **** validate structure  ——分析是否要重建索引,或者索引块有没有坏。分析完后index_stats就有结果了,你可以根据index_stats中的结果来分析是否要rebuild索引

     Analyze index**** compute statistics —— 收集统计数据。

 

在analyze index 的时候需要两个命令,分别是analyzeindex index_name validate structure. 和analyze index index_name compute statistics

Analyze index validate structure 命令,  analyze index index1 validate structure:是用来分析索引的数据块是否有坏块,以及根据分析得到的数据(存放在index_stats)來判断索引是否需要重新建立。

什么样的index需要rebuild?

 当一个table经常进行DML操作时,它的索引会存在许多block空间的浪费,这是因为index block中的记录只有在全部表示为不可用时, block 才能被加入到freelist中去被重新利用。所以我们需要寻找那些浪费空间很严重的index。

 方法是: 1) analyze index index_name validate structure;

          2) select del_lf_blk_len/lf_blk_len from index_stats where name = :index_name;

          3) 如果结果大于20%, 那你的Index就可以被rebuild了。

 

 validate structure有二中模式: online, offline, 默认是offline模式。以offline模式分析时, 会對表加一个4级別的锁(表共享),对run系統可能造成一定的影响。

而online模式则没有表lock的影响,但当以online模式分析时, 在视图index_stats没有统计信息。

 

 analyze indexindex1 compute statistics:是用来统计index的分析信息,来为CBO服务的。从9i开始,Oracle以建议使用dbms_stats package代替 analyze 

时间: 2024-10-27 04:21:54

analyze index...的相关文章

ORACLE虚拟索引(Virtual Index)

ORACLE虚拟索引(Virtual Index)   虚拟索引概念   虚拟索引(Virtual Indexes)是一个定义在数据字典中的假索引(fake index),它没有相关的索引段.虚拟索引的目的是模拟索引的存在而不用真实的创建一个完整索引.这允许开发者创建虚拟索引来查看相关执行计划而不用等到真实创建完索引才能查看索引对执行计划的影响,并且不会增加存储空间的使用.如果我们观察到优化器生成了一个昂贵的执行计划并且SQL调整指导建议我们对某些的某列创建索引,但在生产数据库环境中创建索引与测

[20130815]12c Asynchronous Global Index Maintenance Part III.txt

[20130815]12c Asynchronous Global Index Maintenance Part III.txt 参考链接:http://richardfoote.wordpress.com/2013/08/07/12c-asynchronous-global-index-maintenance-part-iii-re-makere-model/ 更多的是重复作者的测试,加深理解: 1.测试环境: SQL> @ver BANNER                         

[20120903]关于Virtual index.txt

[20120903]关于Virtual index.txt         virtual index没有segment,如何去产生该虚拟索引的统计信息,如何保证CBO的有效判断. 做一个测试与学习看看: 1.测试环境: SQL> select * from v$version ; BANNER ------------------------------------------------------------------------------ Oracle Database 11g En

[201112114]index leaf node 50-50 split

index leaf node  50-50 split [201112114]index leaf node  50-50 split.txt 当索引leaf满分裂时,存在两种情况:1.如果插入的键值是最大值,分裂按照90-10 split.2.如果不是,按照50-50分裂. 如何大量出现50-50的分裂呢?实际上的测试的例子很简单,如果先插入一个异常大的键值,插入键值是线性增加的,就可以模拟大量50-50的分裂然后如下: 1.建立测试表: select * from v$version;BA

[20130815]12c Asynchronous Global Index Maintenance Part II.txt

[20130815]12c Asynchronous Global Index Maintenance Part II.txt 参考链接:http://richardfoote.wordpress.com/2013/08/06/12c-asynchronous-global-index-maintenance-part-ii-the-space-between/ 更多的是重复作者的测试,加深理解: 1.测试环境: SQL> @ver BANNER                         

oracle 9i index bug?

9i index bug.txt 1.建立表以及索引SQL> select * from v$version ;BANNER----------------------------------------------------------------Oracle9i Enterprise Edition Release 9.2.0.8.0 - ProductionPL/SQL Release 9.2.0.8.0 - ProductionCORE    9.2.0.8.0       Produ

Oracle索引分裂(Index Block Split)

Oracle索引分裂(Index Block Split) 索引分裂:index  block split : 就是索引块的分裂,当一次DML 事务操作修改了索引块上的数据,但是旧有的索引块没有足够的空间去容纳新修改的数据,那么将分裂出一个新的索引块,旧有块的部分数据放到新开辟的索引块上去. 分裂的类型:根节点分裂,分支节点分裂,叶节点分裂(最频繁发生,对性能影响最直接) 按照数据迁移量的比例,将索引分裂分为两种类型:9-1分裂和5-5分裂. 9-1分裂:绝大部分数据还保留在旧有节点上,仅有非常

数据库对象统计分析技术应用

对象|数据|数据库|统计 ORACLE在执行SQL时如果使用成本方式分析则所有的成本分析信息来源依靠于系统的统计分析表(DBA_TABLES.DBA_INDEXES.DBA_TAB_COLUMNS)数据,如果说统计分析的数据是不准确的,那可能会使ORACLE分析出来的路径执行性能极差,所以统计分析数据是影响ORACLE性能极重要的信息.   统计分析主要包括产生表及索引的统计信息 表的统计信息主要包括表的行数,每行的平均长度(字节),空闲块,统计时间等信息 索引的统计信息主要包括行数.层数.叶块

使用索引的误区之四:空值对索引的影响

索引 使用索引的误区之四:空值对索引的影响我们首先做一些测试数据: SQL> create table t(x int, y int);   Table created   请注意,这里我对表t做了一个唯一(联合)索引: SQL> create unique index t_idx on t(x,y);   Index created   SQL> insert into t values(1,1);   1 row inserted   SQL> insert into t va