Oracle收集统计信息和重建索引
来源:互联网 发布:stm32串口读取数据 编辑:程序博客网 时间:2024/05/19 13:30
1.统计信息介绍:
Statistic对Oracle是非常重要的。它会收集数据库中对象的详细信息,并存储在相应的数据字典里。根据这些统计信息,optimizer可以对每个SQL去选择最好的执行计划。
2.Oracle的Statistic信息的收集分两种:自动收集和手工收集。
(1) Oracle的Automatic Statistics Gathering是通过Scheduler来实现收集和维护的。Job名称是GATHER_STATS_JOB,该Job收集数据库所有对象的2种统计信息:
(a)Missing statistics(统计信息缺失)
(b)Stale statistics(统计信息陈旧)
该Job是在数据库创建的时候自动创建,并由Scheduler来管理。Scheduler在maintenance 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';
(2)Oracle 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;
- Oracle收集统计信息和重建索引
- Oracle收集索引统计信息
- oracle重建、更新索引、索引统计信息命令
- oracle统计信息收集
- oracle统计信息收集
- 收集oracle统计信息
- 收集oracle统计信息
- 收集oracle统计信息
- 收集oracle统计信息
- 收集oracle统计信息
- 收集oracle统计信息
- 收集oracle统计信息
- 收集oracle统计信息
- Oracle 收集统计信息
- ORACLE 收集统计信息
- 收集oracle统计信息
- ORACLE 收集统计信息
- ORACLE收集统计信息
- Java基础:三步学会Java Socket编程
- 最详细的SQL注入相关的命令整理
- Espcms v5暴力破解key来实现sql注入
- 最详细的SQL注入相关的命令整理
- java 容器排序
- Oracle收集统计信息和重建索引
- linux c 抓取网页
- 最详细的SQL注入相关的命令整理
- 在Debian中玩转MySql
- 最详细的SQL注入相关的命令整理
- JAVA SSH框架搭建流程
- 灰度图像形态学膨胀与腐蚀
- 数组排序
- nginx的安装