首页 > Linux操作系统 > Linux操作系统 > statistics 1
统计信息的重要,大家都知道。那么什么是统计信息呢?
统计信息:是些数据,这些数据反映数据库,以及数据库中对象的详细信息.
查询优化器通过根据统计信息来决定选择执行何种执行计划
统计信息有以下一些:
Table statistics
Number of rows
Number of blocks
Average row length
Column statistics
Number of distinct values (NDV) in column
Number of nulls in column
Data distribution (histogram)
Index statistics
Number of leaf blocks
Levels
Clustering factor
System statistics
I/O performance and utilization
CPU performance and utilization
统计信息存储在数据字典中,可以通过了解相关的视图去查看统计信息.因为数据库当中的对象时常发生变化,统计信息就需要经常更新,这样才能准确反映数据库中对象的真实情况。
统计信息的维护是ORACLE自己在维护。用户可以使用DBMS_STATS 包来维护统计信息.这个包提供了一些用于管理统计信息的过程.用户可以保存,恢复统计信息,把统计信息从一个系统,导到另一个系统.锁定统计信息等.
如何自动收集统计信息呢?
收集统计信息的推荐方法:让ORACLE自己去收集.ORACLE通过一个定时任务去做这个事情,JOB名称:GATHER_STATS_JOB。它收集数据库中所有的统计信息。包含:
漏掉的,和过时的统计信息
当数据库创建的时候,这个JOB就创建了,当维护程序窗口打开的时候,这个过程就被调度执行.通常是晚上10点到早上6点自动收集统计信息.周末是全天收集.
通过视图查看DBA_SCHEDULER_JOBS 是否在自动收集统计信息.
如果要停止自动收集,在SQLPLUS中,以SYS用户执行
BEGIN
DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
END;
/
何时应该手动收集统计信息呢?
#1不稳定的表:那些在白天要被删除,清空,重建的表
#2.Objects which are the target of large bulk loads which add 10% or more to the object's total size.
这时候可以类似这样处理:
BEGIN
DBMS_STATS.DELETE_TABLE_STATS('OE','ORDERS');
DBMS_STATS.LOCK_TABLE_STATS('OE','ORDERS');
END;
/
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15720542/viewspace-629646/ ,如需转载,请注明出处,否则将追究法律责任。