ITPub博客

首页 > Linux操作系统 > Linux操作系统 > statistics 1

statistics 1

原创 Linux操作系统 作者:oracle_db 时间:2010-03-16 23:25:27 0 删除 编辑

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

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

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

统计信息有以下一些:

  • 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/ ,如需转载,请注明出处,否则将追究法律责任。

    下一篇: statistics 2
    请登录后发表评论 登录
    全部评论

    注册时间:2008-11-13

    • 博文量
      158
    • 访问量
      354230