statistics 1

本文介绍了Oracle数据库中的统计信息,包括其重要性和维护方法。统计信息包括表、列、索引和系统的统计数据,用于帮助查询优化器选择执行计划。文章还讨论了如何自动和手动收集这些统计信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

统计信息的重要,大家都知道。那么什么是统计信息呢?

统计信息:是些数据,这些数据反映数据库,以及数据库中对象的详细信息.

查询优化器通过根据统计信息来决定选择执行何种执行计划

统计信息有以下一些:

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博客 ” ,链接:http://blog.itpub.net/15720542/viewspace-629646/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15720542/viewspace-629646/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值