您的位置:首页 > 数据库 > Oracle

Oracle确定过期的统计信息

2013-11-29 14:52 369 查看
    Youmust regularly gather statistics on database objects as thesedatabase objects are modified over time. To determine whether agiven database object needs new database statistics, OracleDatabase provides a table monitoring facility. Thismonitoring isenabled by default when
STATISTICS_LEVEL
is set to
TYPICAL
or
ALL
.   经过一段时间,随着数据库对象被修改,必须定期搜集统计信息。为了确定数据库对象需要新的数据库统计信息,oracle数据库提供了一个表监控特性。当
STATISTICS_LEVEL设置为TYPICAL
ALL时,表监控特性默认是启动的。
   Monitoring tracks the approximate number of
INSERT
s,
UPDATE
s, and
DELETE
s for that table andwhether the table has been truncated since the last time statisticswere gathered. You can access informationabout changes of tablesin the
USER_TAB_MODIFICATIONS
view. Following adata-modification, there may be a few minutes delay while OracleDatabase propagates the information to this view. Use the
DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO
procedure toimmediately reflect the outstanding monitored information kept inthe memory.   表监控特性跟踪从最后一次统计搜集后,表的insert、update、delete操作的近似数,和表是否被truncate。可以通过查询
USER_TAB_MODIFICATIONS视图获得关于表变化的信息。数据修改后,通过USER_TAB_MODIFICATIONS获取修改信息可能有一些延时。使用DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO立即将延时信息保持到内存中。
    The
GATHER_DATABASE_STATS
or
GATHER_SCHEMA_STATS
procedures gather new statisticsfor tables with stale statistics when the
OPTIONS
parameter is set to
GATHER
STALE
or
GATHER
AUTO
.If a monitored table has been modified more than10%, then these statistics are considered stale and gatheredagain.
   当属性OPTIONS设置为GATHER STALE
or
GATHER
AUTO
GATHER_DATABASE_STATS
GATHER_SCHEMA_STATS
为有过期统计信息的表搜集新的统计信息,如果一个监控的表修改超过了10%,则统计信息被认为过期,需再次搜集。
   
部分实验如下:
SQL> select * from test01;        A         B---------- ----------       21        10        9        10       22        10       23        10       24        10       25        10        1         1        2         2       44        44       55        5510 rowsselected.   ------表数据10行SQL> select * fromuser_tab_modifications;  no rowsselected     ------实验前已对测试库做了搜集统计信息,此时显示为空SQL> insert into test01 values(66,66);1 row created.SQL> commit;Commit complete.SQL> select * from user_tab_modifications;no rowsselected     ------表的修改未及时显示SQL> exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;    ------将修改的信息keep到内存PL/SQL procedure successfully completed.SQL> selecttable_name,INSERTS,UPDATES,DELETES,truncated fromuser_tab_modifications;TABLE_NAME                       INSERTS   UPDATES   DELETES TRU------------------------------ ---------- ---------- -------------TEST01                                 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息