ITPub博客

首页 > 数据库 > Oracle > 统计信息的时效性

统计信息的时效性

原创 Oracle 作者:zhangjihang 时间:2010-03-23 14:54:09 0 删除 编辑

如果统计信息过旧会引起许多问题,而对于静态数据,反复收集统计信息又是没有意义的,所以注意统计信息的时效性非常重要。

数据库引擎通过SQL语句修改每一个对象的行数统计,可以通过如下查询得到:

SQL> select inserts,updates,deletes,truncated from dba_tab_modifications where table_name='EMP' and table_owner='SCOTT';

INSERTS UPDATES DELETES TRU

---------- ---------- ---------- ---

2 0 38 NO

注意*_tab_modifications视图并不是实时刷新的,而是oracle自己周期性的从内存中将修改的信息刷新进去,可以调用dbms_stats.flush_database_monitoring_info手动刷新。

oracle10g后dba_tab_statistics中stale_stats字段显示对象的统计信息是否过时,YES为过时。oracle10g以前修改超过10%的数据行,统计信息就被认为是过期的,到oracle11g,可以修改stale_percent参数来配置阀值。

oracle9i上,该技术只有在表级别指定时才会启用,在创建或修改表时,加monitoring关键字或通过dbms_stats提供的过程,语法如下:

DBMS_STATS.ALTER_SCHEMA_TAB_MONITORING (
ownname VARCHAR2 DEFAULT NULL,
monitoring BOOLEAN DEFAULT TRUE);

DBMS_STATS.ALTER_DATABASE_TAB_MONITORING (
monitoring BOOLEAN DEFAULT TRUE,
sysobjs BOOLEAN DEFAULT FALSE);

上述两个过程只影响已经存在的表,不影响之后创建的表,到oracle10g以后,弃用了monitoring选项,由数据库参数statistics_level决定是否启动统计修改次数的功能,当参数设置为typeical或者all时,启动计数。

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10176825/viewspace-1032258/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: index monitoring
下一篇: ORACLE开销计算
请登录后发表评论 登录
全部评论
  • 博文量
    16
  • 访问量
    89004