Oracle收集统计信息和重建索引

1.统计信息介绍:

StatisticOracle是非常重要的。它会收集数据库中对象的详细信息,并存储在相应的数据字典里。根据这些统计信息,optimizer可以对每个SQL去选择最好的执行计划。

2.OracleStatistic信息的收集分两种:自动收集和手工收集。

1 OracleAutomatic Statistics Gathering是通过Scheduler来实现收集和维护的。Job名称是GATHER_STATS_JOB,Job收集数据库所有对象的2种统计信息:

aMissing statistics(统计信息缺失)

bStale statistics(统计信息陈旧)

Job是在数据库创建的时候自动创建,并由Scheduler来管理。Schedulermaintenance windows open时运行gather job默认情况下,job会在每天晚上10到早上6点和周末全天开启。该过程首先检测统计信息缺失和陈旧的对象。然后确定优先级,再开始进行统计信息。Gather_stats_job调用dbms_stats.gather_database_stats_job_proc过程来收集statistics的信息。该过程收集对象statistics的条件如下:

a)对象的统计信息之前没有收集过。

b)当对象有超过10%rows被修改,此时对象的统计信息也称为stale statistics

查看该Job信息:

SQL> select * from dba_scheduler_jobs where lower(job_name) ='gather_stats_job';

2Oracle Statistic手工收集,可以使用analyze命令,也可以使用DBMS_STATS包来收集,Oracle建议使用DBMS_STATS包来收集统计信息,因为DBMS_STATS包收集的更广,并且更准确。

analyze命令(analyze 不会重建索引)的语法如下:

SQL>analyze table tablename compute statistics;

SQL>analyze table tablename compute statistics for all indexes;

SQL>analyze table tablename delete statistics

analyze table tablename compute statistics等同于 analyze table tablename compute statistics for table for allindexes for all columns

3.如何检查Oracle统计信息是否陈旧?

select * from dba_tab_statistics order by last_analyzed desc;

从结果集中重点查看工单业务表对应的last_analyzed时间和stale_stats状态。last_analyzed字段表示Oracle最后一次对该表的统计时间,stale_stats表示该表的统计信息是否陈旧。

4.为何要重建索引?

当我们创建索引时,oracle会为索引创建索引树,表和索引树通过rowid(伪列)来定位数据。当表里的数据发生更新时,oracle会自动维护索引树。但是在索引树中没有更新操作,只有插入和删除(实际并未删除,只是标示一下)操作。如果表更新比较频繁,那么在索引中删除标示会越来越多,这时索引的查询效率必然降低,所以我们应该定期重建索引。来消除索引中这些删除标记。

5.考虑重建索引的场合

1)表上频繁发生update,delete操作

2)表上发生了alter table ..move操作(move操作导致了rowid变化)

6.如何重建索引?

一般不会选择先删除索引,然后再重新创建索引,而是rebuild索引。在rebuild期间,用户还可以使用原来的索引,并且rebuild新的索引时也会利用原来的索引信息,这样重建索引会块一些。

语句举例:alter index IDX_Name rebuild;

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值